import Foundation

enum AppLanguage: String, CaseIterable, Identifiable {
    case system = "system"
    case english = "en"
    case simplifiedChinese = "zh-Hans"
    case japanese = "ja"
    case korean = "ko"
    case french = "fr"
    case spanish = "es"
    case italian = "it"
    case czech = "cs"
    case german = "de"
    case russian = "ru"
    case hindi = "hi"
    case vietnamese = "vi"
    case portugueseBrazil = "pt-BR"

    var id: String { rawValue }

    static func resolveSystemDefault() -> AppLanguage {
        guard let preferred = Locale.preferredLanguages.first else { return .english }
        let lower = preferred.lowercased()
        if lower.hasPrefix("zh") { return .simplifiedChinese }
        if lower.hasPrefix("ja") { return .japanese }
        if lower.hasPrefix("ko") { return .korean }
        if lower.hasPrefix("fr") { return .french }
        if lower.hasPrefix("es") { return .spanish }
        if lower.hasPrefix("it") { return .italian }
        if lower.hasPrefix("cs") { return .czech }
        if lower.hasPrefix("de") { return .german }
        if lower.hasPrefix("ru") { return .russian }
        if lower.hasPrefix("hi") { return .hindi }
        if lower.hasPrefix("vi") { return .vietnamese }
        if lower.hasPrefix("pt") { return .portugueseBrazil }
        return .english
    }
}

enum LocalizationKey: String {
    case noAppsFound
    case searchPlaceholder
    case appTitle
    case modifiedFrom
    case backgroundHint
    case classicMode
    case iconSize
    case iconsPerRow
    case rowsPerPage
    case iconHorizontalSpacing
    case iconVerticalSpacing
    case labelFontSize
    case iconLabelFontWeight
    case folderDropZoneSize
    case folderDropZoneSizeHint
    case folderDropZoneSizeWithDefault
    case pageIndicatorHint
    case rememberPageTitle
    case pageIndicatorTopPaddingLabel
    case globalShortcutTitle
    case shortcutSetButton
    case shortcutSaveButton
    case shortcutClearButton
    case shortcutNotSet
    case shortcutListening
    case shortcutCapturePrompt
    case shortcutNoModifierWarning
    case smaller
    case larger
    case predictDrop
    case showLabels
    case useLocalizedThirdPartyTitles
    case enableAnimations
    case hideDockOption
    case hoverMagnification
    case hoverMagnificationScale
    case activePressEffect
    case activePressScale
    case animationDurationLabel
    case gridSizeChangeWarning
    case viewOnGitHub
    case scrollSensitivity
    case low
    case high
    case importSystem
    case importLegacy
    case importTip
    case exportData
    case importData
    case refresh
    case showQuickRefreshButton
    case launchAtLoginTitle
    case launchAtLoginDescription
    case lockLayoutTitle
    case lockLayoutDescription
    case scanSourcesIntroTitle
    case scanSourcesIntroDescription
    case scanSourcesPlaceholder
    case scanSourcesDefaultListTitle
    case scanSourcesCustomListTitle
    case scanSourcesAddButton
    case scanSourcesResetButton
    case scanSourcesEmptyHint
    case scanSourcesMissingBadge
    case missingAppBadge
    case resetLayout
    case resetAlertTitle
    case resetAlertMessage
    case resetConfirm
    case cancel
    case quit
    case languagePickerTitle
    case appearanceModeTitle
    case appearanceModeFollowSystem
    case appearanceModeLight
    case appearanceModeDark
    case versionPrefix
    case settingsSectionPerformance
    case settingsSectionTitles
    case settingsSectionDevelopment
    case settingsSectionAI
    case settingsSectionAbout
    case settingsSectionGeneral
    case settingsSectionAppSources
    case settingsSectionAppearance
    case settingsSectionHiddenApps
    case settingsSectionGameController
    case settingsSectionSound
    case settingsSectionUpdates
    case backgroundStyleTitle
    case backgroundStyleOptionBlur
    case backgroundStyleOptionGlass
    case developmentPlaceholderTitle
    case developmentPlaceholderSubtitle
    case aiSectionComingSoonTitle
    case aiSectionComingSoonDescription
    case aiSectionContextVision
    case gameControllerPlaceholderTitle
    case gameControllerPlaceholderSubtitle
    case gameControllerToggleTitle
    case gameControllerStatusDisabled
    case gameControllerStatusNoController
    case gameControllerStatusConnectedFormat
    case gameControllerQuickGuideTitle
    case gameControllerQuickGuideDirection
    case gameControllerQuickGuideSelect
    case gameControllerQuickGuideCancel
    case soundToggleTitle
    case soundToggleDescription
    case soundEventLaunchpadOpen
    case soundEventLaunchpadClose
    case soundEventNavigation
    case soundPreviewButton
    case soundOptionNone
    case voiceToggleTitle
    case voiceToggleDescription
    case voiceNoteMutualExclusive
    case voiceAnnouncementAppFormat
    case voiceAnnouncementFolderFormat
    case accessibilityPlaceholderTitle
    case accessibilityPlaceholderSubtitle
    case hiddenAppsAddButton
    case hiddenAppsEmptyTitle
    case hiddenAppsEmptySubtitle
    case hiddenAppsHint
    case hiddenAppsRemoveButton
    case hiddenAppsSearchPlaceholder
    case performancePlaceholderTitle
    case performancePlaceholderSubtitle
    case renameSearchPlaceholder
    case customTitlePlaceholder
    case customTitleHint
    case customTitleDefaultFormat
    case customTitleReset
    case customTitleAddButton
    case customTitleEmptyTitle
    case customTitleEmptySubtitle
    case customTitleNoResults
    case customTitlePickerMessage
    case customTitleEdit
    case customTitleSave
    case customTitleCancel
    case customTitleDelete
    case loadingApplications
    case showFPSOverlay
    case showFPSOverlayDisclaimer
    case customIconTitle
    case customIconChoose
    case customIconReset
    case customIconHint
    case customIconError
    case pageIndicatorOffsetLabel
    case folderWindowWidth
    case folderWindowHeight
    case folderWindowSizeHint
    case languageNameSystem
    case languageNameEnglish
    case languageNameChinese
    case languageNameJapanese
    case languageNameKorean
    case languageNameFrench
    case languageNameSpanish
    case languageNameItalian
    case languageNameCzech
    case languageNameGerman
    case languageNameRussian
    case languageNameHindi
    case languageNameVietnamese
    case languageNamePortugueseBrazil
    case folderNamePlaceholder
    case chooseButton
    case exportPanelMessage
    case importPrompt
    case importPanelMessage
    case legacyArchivePanelMessage
    case importSuccessfulTitle
    case importFailedTitle
    case okButton

    // 更新检查相关
    case checkForUpdates
    case checkForUpdatesButton
    case checkingForUpdates
    case upToDate
    case updateAvailable
    case newVersion
    case downloadUpdate
    case updateCheckFailed
    case tryAgain
    case autoCheckForUpdates
    case versionParseError
    case updatesRefreshButton
    case openUpdaterConfig
    case updaterConfirmTitle
    case updaterConfirmMessage
    case updaterTerminalHint
    case updaterLaunchFailed
    case updaterMissingBinary
    case updaterNotExecutable
    case updaterHoldPrompt
}

final class LocalizationManager {
    static let shared = LocalizationManager()

    private let translations: [AppLanguage: [LocalizationKey: String]]

    private init() {
        var builder: [AppLanguage: [LocalizationKey: String]] = [
            .english: [
                .noAppsFound: "No apps found",
                .searchPlaceholder: "Search",
                .renameSearchPlaceholder: "Search apps",
                .customTitlePlaceholder: "Enter a custom name",
                .customTitleHint: "Rename apps here. Custom titles persist across imports and localization changes.",
                .customTitleDefaultFormat: "Default: %@",
                .customTitleReset: "Restore default",
                .customTitleAddButton: "Add application",
                .customTitleEmptyTitle: "No custom titles yet",
                .customTitleEmptySubtitle: "Choose an app to start renaming. Custom titles stay even after imports or localization changes.",
                .customTitleNoResults: "No matches",
                .customTitlePickerMessage: "Select an application to manage its title.",
                .customTitleEdit: "Edit",
                .customTitleSave: "Save",
                .customTitleCancel: "Cancel",
                .customTitleDelete: "Remove",
                .loadingApplications: "Loading applications…",
                .showFPSOverlay: "Show FPS overlay",
                .showFPSOverlayDisclaimer: "Approximate measurement; may not reflect actual frame pacing.",
                .customIconTitle: "Application icon",
                .customIconChoose: "Choose…",
                .customIconReset: "Restore default",
                .customIconHint: "PNG/ICNS files at 512×512 work best. Changes apply instantly.",
                .customIconError: "Could not load the selected image.",
                .pageIndicatorOffsetLabel: "Page indicator spacing",
                .pageIndicatorTopPaddingLabel: "Page indicator top padding",
                .folderWindowWidth: "Folder window width",
                .folderWindowHeight: "Folder window height",
                .folderWindowSizeHint: "Applies to windowed mode only; classic fullscreen uses a fixed layout.",
                .appTitle: "LaunchNext",
                .modifiedFrom: "Modified from LaunchNow version 1.3.1",
                .backgroundHint: "Automatically run on background: add LaunchNext to dock or use keyboard shortcuts to open the application window",
                .classicMode: "Classic Launchpad (Fullscreen)",
                .iconSize: "Icon size",
                .iconsPerRow: "Icons per row",
                .rowsPerPage: "Rows per page",
                .iconHorizontalSpacing: "Horizontal spacing",
                .iconVerticalSpacing: "Vertical spacing",
                .labelFontSize: "Label font size",
                .iconLabelFontWeight: "Icon label weight",
                .folderDropZoneSize: "Folder drop zone size",
                .folderDropZoneSizeHint: "Smaller values reduce accidental folder creation when dragging icons in windowed mode.",
                .folderDropZoneSizeWithDefault: "Folder drop zone size (Default: %.1fx)",
                .smaller: "Smaller",
                .larger: "Larger",
                .predictDrop: "Predict drop position",
                .showLabels: "Show labels under icons",
                .useLocalizedThirdPartyTitles: "Use localized app names",
                .enableAnimations: "Enable slide animation",
                .hideDockOption: "Hide Dock",
                .hoverMagnification: "Hover magnification",
                .hoverMagnificationScale: "Hover scale",
                .activePressEffect: "Press feedback",
                .activePressScale: "Press scale",
                .animationDurationLabel: "Slide animation duration",
                .gridSizeChangeWarning: "Changing the grid size may reposition some icons.",
                .pageIndicatorHint: "If vertical spacing feels subtle, adjust the page indicator offset below.",
                .rememberPageTitle: "Remember last opened page",
                .globalShortcutTitle: "Global shortcut",
                .shortcutSetButton: "Set shortcut",
                .shortcutSaveButton: "Save",
                .shortcutClearButton: "Clear",
                .shortcutNotSet: "Not set",
                .shortcutListening: "Listening…",
                .shortcutCapturePrompt: "Press the desired key combination. Press Esc to cancel.",
                .shortcutNoModifierWarning: "Using no modifier may clash with other apps.",
                .scrollSensitivity: "Scrolling sensitivity",
                .low: "Low",
                .high: "High",
                .importSystem: "Import System Launchpad",
                .importLegacy: "Import Legacy (.lmy)",
                .importTip: "Tip: Click ‘Import System Launchpad’ to import directly from the system Launchpad.",
                .exportData: "Export Data",
                .importData: "Import Data",
                .refresh: "Refresh",
                .showQuickRefreshButton: "Show quick refresh button",
                .launchAtLoginTitle: "Silent launch at login",
                .launchAtLoginDescription: "After logging into macOS, LaunchNext starts in the background without showing its window.",
                .lockLayoutTitle: "Lock layout",
                .lockLayoutDescription: "Prevent rearranging apps and folders until you turn this off.",
                .scanSourcesIntroTitle: "Manage additional app libraries",
                .scanSourcesIntroDescription: "Add external drives or custom folders so LaunchNext can gather apps beyond the default locations.",
                .scanSourcesPlaceholder: "Coming soon: choose custom folders here and LaunchNext will scan and stay in sync.",
                .scanSourcesDefaultListTitle: "System directories",
                .scanSourcesCustomListTitle: "Custom directories",
                .scanSourcesAddButton: "Add folders…",
                .scanSourcesResetButton: "Restore defaults",
                .scanSourcesEmptyHint: "No custom directories yet. Add one to keep extra apps in sync.",
                .scanSourcesMissingBadge: "Offline",
                .missingAppBadge: "Offline",
                .resetLayout: "Reset Layout",
                .resetAlertTitle: "Confirm to reset layout?",
                .resetAlertMessage: "This will completely reset the layout: remove all folders, clear saved order, and rescan all applications. All customizations will be lost.",
                .resetConfirm: "Reset",
                .cancel: "Cancel",
                .quit: "Quit",
                .languagePickerTitle: "Language",
                .appearanceModeTitle: "Appearance",
                .appearanceModeFollowSystem: "Follow system",
                .appearanceModeLight: "Light",
                .appearanceModeDark: "Dark",
                .versionPrefix: "v",
                .languageNameSystem: "Follow System",
                .languageNameEnglish: "英语",
                .languageNameChinese: "中文",
                .languageNameJapanese: "日语",
                .languageNameKorean: "韩语",
                .languageNameFrench: "法语",
                .languageNameSpanish: "西班牙语",
                .languageNameItalian: "意大利语",
                .languageNameCzech: "捷克语",
                .languageNameGerman: "德语",
                .languageNameRussian: "俄语",
                .languageNameHindi: "Hindi",
                .languageNameVietnamese: "Vietnamese",
                .languageNamePortugueseBrazil: "Portuguese (Brazil)",
                .folderNamePlaceholder: "Folder Name",
                .viewOnGitHub: "Open project link",
                .chooseButton: "Choose",
                .exportPanelMessage: "Choose a destination folder to export LaunchNext data",
                .importPrompt: "Import",
                .importPanelMessage: "Choose a folder previously exported from LaunchNext",
                .legacyArchivePanelMessage: "Choose a legacy Launchpad archive (.lmy/.zip) or a db file",
                .importSuccessfulTitle: "Import Successful",
                .importFailedTitle: "Import Failed",
                .okButton: "OK",

                // 更新检查相关
                .checkForUpdates: "Check for Updates",
                .checkForUpdatesButton: "Check for Updates",
                .checkingForUpdates: "Checking for updates...",
                .upToDate: "You're up to date",
                .updateAvailable: "Update Available",
                .newVersion: "New version:",
                .downloadUpdate: "Download Update",
                .updateCheckFailed: "Update check failed",
                .tryAgain: "Try Again",
                .autoCheckForUpdates: "Check for updates automatically",
                .versionParseError: "Version parsing error",
                .updatesRefreshButton: "Check again",
                .openUpdaterConfig: "Open updater config",
                .updaterConfirmTitle: "Install update via Terminal?",
                .updaterConfirmMessage: "LaunchNext will quit and open the Terminal-based updater. The app will relaunch automatically after installation completes.\n\nIf the Download Update button on the right looks transparent, click it anyway.\nThis is a macOS bug.⬇️",
                .updaterTerminalHint: "The update runs in Terminal. LaunchNext will quit and relaunch automatically.",
                .updaterLaunchFailed: "Failed to start updater (%@).",
                .updaterMissingBinary: "Updater binary not found in the app bundle.",
                .updaterNotExecutable: "Updater binary is not executable.",
            .updaterHoldPrompt: "Press Enter to close this window. LaunchNext will reopen automatically."
        ],
        .portugueseBrazil: [
            .noAppsFound: "Nenhum app encontrado",
            .searchPlaceholder: "Pesquisar",
            .renameSearchPlaceholder: "Buscar apps",
            .customTitlePlaceholder: "Digite um nome personalizado",
            .customTitleHint: "Renomeie apps aqui. Os nomes personalizados permanecem mesmo após novas importações ou mudanças de idioma.",
            .customTitleDefaultFormat: "Padrão: %@",
            .customTitleReset: "Restaurar padrão",
            .customTitleAddButton: "Adicionar aplicativo",
            .customTitleEmptyTitle: "Nenhum nome personalizado ainda",
            .customTitleEmptySubtitle: "Escolha um app para começar a renomear. Os nomes permanecem após importações ou mudanças de idioma.",
            .customTitleNoResults: "Nenhum resultado",
            .customTitlePickerMessage: "Selecione o aplicativo cujo nome você deseja gerenciar.",
            .customTitleEdit: "Editar",
            .customTitleSave: "Salvar",
            .customTitleCancel: "Cancelar",
            .customTitleDelete: "Remover",
            .loadingApplications: "Carregando apps…",
            .showFPSOverlay: "Mostrar overlay de FPS",
            .showFPSOverlayDisclaimer: "Valor aproximado; pode não refletir o ritmo real de quadros.",
            .customIconTitle: "Ícone do aplicativo",
            .customIconChoose: "Escolher…",
            .customIconReset: "Restaurar padrão",
            .customIconHint: "Arquivos PNG/ICNS de 512×512 funcionam melhor. As alterações são aplicadas imediatamente.",
            .customIconError: "Não foi possível carregar a imagem selecionada.",
            .pageIndicatorOffsetLabel: "Espaçamento do indicador de páginas",
            .pageIndicatorTopPaddingLabel: "Espaçamento superior do indicador de páginas",
            .folderWindowWidth: "Largura da janela de pastas",
            .folderWindowHeight: "Altura da janela de pastas",
            .folderWindowSizeHint: "Válido apenas no modo janela; o modo clássico em tela cheia usa um layout fixo.",
            .appTitle: "LaunchNext",
            .modifiedFrom: "Modificado a partir do LaunchNow versão 1.3.1",
            .backgroundHint: "Para manter em segundo plano, fixe o LaunchNext no Dock ou use atalhos de teclado para abrir a janela.",
            .classicMode: "Launchpad clássico (Tela cheia)",
            .iconSize: "Tamanho dos ícones",
            .iconsPerRow: "Ícones por linha",
            .rowsPerPage: "Linhas por página",
            .iconHorizontalSpacing: "Espaçamento horizontal",
            .iconVerticalSpacing: "Espaçamento vertical",
            .labelFontSize: "Tamanho da fonte dos rótulos",
            .iconLabelFontWeight: "Espessura do rótulo do ícone",
            .folderDropZoneSize: "Área-alvo para criar pastas",
            .folderDropZoneSizeHint: "Reduza o valor para evitar criar pastas acidentalmente ao arrastar no modo janela.",
            .folderDropZoneSizeWithDefault: "Área-alvo para criar pastas (Padrão: %.1fx)",
            .smaller: "Menor",
            .larger: "Maior",
            .predictDrop: "Prever posição de soltura",
            .showLabels: "Mostrar nomes dos apps",
            .useLocalizedThirdPartyTitles: "Usar nomes de apps localizados",
            .enableAnimations: "Ativar animação de transição",
            .hideDockOption: "Ocultar Dock",
            .hoverMagnification: "Ampliar ícone selecionado",
            .hoverMagnificationScale: "Fator de ampliação (ícone selecionado)",
            .activePressEffect: "Feedback ao pressionar",
            .activePressScale: "Fator de redução ao pressionar",
            .animationDurationLabel: "Duração da animação de transição",
            .gridSizeChangeWarning: "Alterar o tamanho da grade pode reposicionar alguns ícones.",
            .pageIndicatorHint: "Se notar pouca diferença, ajuste o indicador de páginas abaixo.",
            .rememberPageTitle: "Lembrar última página aberta",
            .globalShortcutTitle: "Atalho global",
            .shortcutSetButton: "Definir atalho",
            .shortcutSaveButton: "Salvar",
            .shortcutClearButton: "Limpar",
            .shortcutNotSet: "Não definido",
            .shortcutListening: "Escutando…",
            .shortcutCapturePrompt: "Pressione a combinação desejada. Esc para cancelar.",
            .shortcutNoModifierWarning: "Sem modificadores pode conflitar com outros apps.",
            .scrollSensitivity: "Sensibilidade de rolagem",
            .low: "Baixa",
            .high: "Alta",
            .importSystem: "Importar Launchpad do sistema",
            .importLegacy: "Importar Legacy (.lmy)",
            .importTip: "Dica: clique em ‘Importar Launchpad do sistema’ para trazer imediatamente o layout original.",
            .exportData: "Exportar dados",
            .importData: "Importar dados",
            .refresh: "Atualizar",
            .showQuickRefreshButton: "Mostrar botão de atualização rápida",
            .launchAtLoginTitle: "Iniciar silenciosamente ao fazer login",
            .launchAtLoginDescription: "Após entrar no macOS, o LaunchNext inicia em segundo plano sem mostrar a janela.",
            .lockLayoutTitle: "Bloquear layout",
            .lockLayoutDescription: "Impede reorganizar apps e pastas enquanto estiver ativado.",
            .scanSourcesIntroTitle: "Gerenciar bibliotecas adicionais",
            .scanSourcesIntroDescription: "Adicione unidades externas ou pastas personalizadas para que o LaunchNext acompanhe apps além dos locais padrão.",
            .scanSourcesPlaceholder: "Em breve: escolha pastas personalizadas aqui e o LaunchNext fará a sincronização.",
            .scanSourcesDefaultListTitle: "Diretórios do sistema",
            .scanSourcesCustomListTitle: "Diretórios personalizados",
            .scanSourcesAddButton: "Adicionar pastas…",
            .scanSourcesResetButton: "Restaurar padrões",
            .scanSourcesEmptyHint: "Nenhum diretório personalizado ainda. Adicione um para sincronizar mais apps.",
            .scanSourcesMissingBadge: "Offline",
            .missingAppBadge: "Offline",
            .resetLayout: "Reinicializar layout",
            .resetAlertTitle: "Reinicializar layout?",
            .resetAlertMessage: "Isso removerá todas as pastas, apagará as posições salvas e fará uma nova varredura dos apps.",
            .resetConfirm: "Reinicializar",
            .cancel: "Cancelar",
            .quit: "Sair",
            .languagePickerTitle: "Idioma",
            .appearanceModeTitle: "Aparência",
            .appearanceModeFollowSystem: "Seguir o sistema",
            .appearanceModeLight: "Claro",
            .appearanceModeDark: "Escuro",
            .versionPrefix: "v",
            .languageNameSystem: "Seguir o sistema",
            .languageNameEnglish: "Inglês",
            .languageNameChinese: "Chinês",
            .languageNameJapanese: "Japonês",
            .languageNameKorean: "Coreano",
            .languageNameFrench: "Francês",
            .languageNameSpanish: "Espanhol",
            .languageNameItalian: "Italiano",
            .languageNameCzech: "Tcheco",
            .languageNameGerman: "Alemão",
            .languageNameRussian: "Russo",
            .languageNameHindi: "Hindi",
            .languageNameVietnamese: "Vietnamita",
            .languageNamePortugueseBrazil: "Português (Brasil)",
            .folderNamePlaceholder: "Nome da pasta",
            .viewOnGitHub: "Abrir no GitHub",
            .chooseButton: "Escolher",
            .exportPanelMessage: "Escolha uma pasta para exportar os dados do LaunchNext",
            .importPrompt: "Importar",
            .importPanelMessage: "Selecione a pasta exportada anteriormente pelo LaunchNext",
            .legacyArchivePanelMessage: "Selecione um arquivo Launchpad Legacy (.lmy/.zip) ou um arquivo db",
            .importSuccessfulTitle: "Importação concluída",
            .importFailedTitle: "Falha na importação",
            .okButton: "OK",

            // Atualizações
            .checkForUpdates: "Verificar atualizações",
            .checkForUpdatesButton: "Verificar atualizações",
            .checkingForUpdates: "Verificando atualizações...",
            .upToDate: "Você está na versão mais recente",
            .updateAvailable: "Atualização disponível",
            .newVersion: "Nova versão:",
            .downloadUpdate: "Baixar atualização",
            .updateCheckFailed: "Falha ao verificar atualização",
            .tryAgain: "Tentar novamente",
            .autoCheckForUpdates: "Verificar atualizações automaticamente",
            .versionParseError: "Erro ao analisar versão",
            .updatesRefreshButton: "Verificar novamente",
            .openUpdaterConfig: "Abrir configuração de atualização",
            .updaterConfirmTitle: "Instalar atualização via Terminal?",
            .updaterConfirmMessage: "O LaunchNext será encerrado e abrirá o atualizador no Terminal. Quando terminar, o app abrirá novamente sozinho.\n\nSe o botão Baixar atualização à direita estiver transparente, clique mesmo assim.\nIsso é um bug do macOS.⬇️",
            .updaterTerminalHint: "A atualização ocorre no Terminal. LaunchNext será encerrado e relançado automaticamente.",
            .updaterLaunchFailed: "Falha ao iniciar o atualizador (%@).",
            .updaterMissingBinary: "Binário do atualizador não encontrado no bundle.",
            .updaterNotExecutable: "O atualizador não é executável.",
            .updaterHoldPrompt: "Pressione Enter para fechar esta janela. LaunchNext será aberto novamente automaticamente.",

            .settingsSectionGeneral: "Geral",
            .settingsSectionAppSources: "Fontes de apps",
            .settingsSectionGameController: "Controle",
            .settingsSectionAppearance: "Aparência",
            .settingsSectionHiddenApps: "Apps ocultos",
            .settingsSectionSound: "Som",
            .settingsSectionTitles: "Nomes de apps",
            .settingsSectionPerformance: "Desempenho",
            .settingsSectionDevelopment: "Desenvolvimento",
            .settingsSectionAI: "AI",
            .settingsSectionUpdates: "Atualizações",
            .settingsSectionAbout: "Sobre",
            .aiSectionComingSoonTitle: "AI (em breve)",
            .aiSectionComingSoonDescription: "Vamos reunir aqui os experimentos com IA para layouts e fluxos assistidos. Compartilhe feedback para guiar nosso roteiro.",
            .aiSectionContextVision: "O avanço da inteligência artificial acontece quando entendemos o contexto e colaboramos por interfaces contínuas."
        ],
            .vietnamese: [
                .noAppsFound: "Không tìm thấy ứng dụng nào",
                .searchPlaceholder: "Tìm kiếm",
                .renameSearchPlaceholder: "Tìm ứng dụng",
                .customTitlePlaceholder: "Nhập tên tuỳ chỉnh",
                .customTitleHint: "Đổi tên ứng dụng tại đây. Tên tuỳ chỉnh vẫn được giữ khi nhập dữ liệu hoặc đổi ngôn ngữ.",
                .customTitleDefaultFormat: "Mặc định: %@",
                .customTitleReset: "Khôi phục mặc định",
                .customTitleAddButton: "Thêm ứng dụng",
                .customTitleEmptyTitle: "Chưa có tên tuỳ chỉnh",
                .customTitleEmptySubtitle: "Chọn một ứng dụng để bắt đầu đổi tên. Các tên tuỳ chỉnh sẽ được giữ lại kể cả khi nhập khẩu hoặc thay đổi ngôn ngữ.",
                .customTitleNoResults: "Không có kết quả",
                .customTitlePickerMessage: "Chọn ứng dụng cần quản lý tên hiển thị.",
                .customTitleEdit: "Sửa",
                .customTitleSave: "Lưu",
                .customTitleCancel: "Huỷ",
                .customTitleDelete: "Xoá",
                .loadingApplications: "Đang tải ứng dụng…",
                .showFPSOverlay: "Hiển thị lớp phủ FPS",
                .showFPSOverlayDisclaimer: "Chỉ là số đo xấp xỉ; có thể không khớp với nhịp khung hình thực tế.",
                .customIconTitle: "Biểu tượng ứng dụng",
                .customIconChoose: "Chọn…",
                .customIconReset: "Khôi phục mặc định",
                .customIconHint: "Nên dùng tệp PNG/ICNS 512×512. Thay đổi được áp dụng ngay.",
                .customIconError: "Không thể tải hình ảnh đã chọn.",
                .pageIndicatorOffsetLabel: "Khoảng cách chỉ báo trang",
                .pageIndicatorTopPaddingLabel: "Khoảng cách phía trên chỉ báo trang",
                .folderWindowWidth: "Chiều rộng cửa sổ thư mục",
                .folderWindowHeight: "Chiều cao cửa sổ thư mục",
                .folderWindowSizeHint: "Chỉ áp dụng cho chế độ cửa sổ; toàn màn hình cổ điển dùng bố cục cố định.",
                .appTitle: "LaunchNext",
                .modifiedFrom: "Điều chỉnh từ LaunchNow phiên bản 1.3.1",
                .backgroundHint: "Để chạy nền: ghim LaunchNext vào Dock hoặc dùng phím tắt để mở cửa sổ ứng dụng",
                .classicMode: "Launchpad cổ điển (toàn màn hình)",
                .iconSize: "Kích thước biểu tượng",
                .iconsPerRow: "Số biểu tượng mỗi hàng",
                .rowsPerPage: "Số hàng mỗi trang",
                .iconHorizontalSpacing: "Khoảng cách ngang",
                .iconVerticalSpacing: "Khoảng cách dọc",
                .labelFontSize: "Cỡ chữ nhãn",
                .iconLabelFontWeight: "Độ đậm nhãn biểu tượng",
                .folderDropZoneSize: "Kích thước vùng tạo thư mục",
                .folderDropZoneSizeHint: "Giảm giá trị để hạn chế vô tình tạo thư mục khi kéo biểu tượng ở chế độ cửa sổ.",
                .folderDropZoneSizeWithDefault: "Kích thước vùng tạo thư mục (Mặc định: %.1fx)",
                .smaller: "Nhỏ hơn",
                .larger: "Lớn hơn",
                .predictDrop: "Dự đoán vị trí thả",
                .showLabels: "Hiển thị nhãn dưới biểu tượng",
                .useLocalizedThirdPartyTitles: "Dùng tên ứng dụng đã bản địa hoá",
                .enableAnimations: "Bật hoạt ảnh trượt",
                .hideDockOption: "Ẩn Dock",
                .hoverMagnification: "Phóng to khi trỏ",
                .hoverMagnificationScale: "Tỷ lệ phóng to khi trỏ",
                .activePressEffect: "Phản hồi khi nhấn",
                .activePressScale: "Tỷ lệ khi nhấn",
                .animationDurationLabel: "Thời lượng hoạt ảnh trượt",
                .gridSizeChangeWarning: "Thay đổi kích thước lưới có thể làm đổi vị trí một số biểu tượng.",
                .pageIndicatorHint: "Nếu khoảng cách dọc khó nhận ra, hãy điều chỉnh vị trí chỉ báo trang bên dưới.",
                .rememberPageTitle: "Ghi nhớ trang mở gần nhất",
                .globalShortcutTitle: "Phím tắt toàn cục",
                .shortcutSetButton: "Đặt phím tắt",
                .shortcutSaveButton: "Lưu",
                .shortcutClearButton: "Xoá",
                .shortcutNotSet: "Chưa đặt",
                .shortcutListening: "Đang chờ…",
                .shortcutCapturePrompt: "Nhấn tổ hợp phím mong muốn. Bấm Esc để huỷ.",
                .shortcutNoModifierWarning: "Không dùng phím bổ trợ có thể gây xung đột với ứng dụng khác.",
                .scrollSensitivity: "Độ nhạy cuộn",
                .low: "Thấp",
                .high: "Cao",
                .importSystem: "Nhập Launchpad hệ thống",
                .importLegacy: "Nhập Legacy (.lmy)",
                .importTip: "Mẹo: nhấn ‘Nhập Launchpad hệ thống’ để lấy trực tiếp bố cục hiện tại.",
                .exportData: "Xuất dữ liệu",
                .importData: "Nhập dữ liệu",
                .refresh: "Làm mới",
                .showQuickRefreshButton: "Hiển thị nút làm mới nhanh",
                .resetLayout: "Đặt lại bố cục",
                .resetAlertTitle: "Đặt lại bố cục?",
                .resetAlertMessage: "Thao tác này sẽ xoá mọi thư mục, làm trống thứ tự đã lưu và quét lại toàn bộ ứng dụng. Mọi tuỳ chỉnh sẽ bị mất.",
                .resetConfirm: "Đặt lại",
                .cancel: "Huỷ",
                .quit: "Thoát",
                .languagePickerTitle: "Ngôn ngữ",
                .appearanceModeTitle: "Giao diện",
                .appearanceModeFollowSystem: "Theo hệ thống",
                .appearanceModeLight: "Sáng",
                .appearanceModeDark: "Tối",
                .versionPrefix: "v",
                .languageNameSystem: "Theo hệ thống",
                .languageNameEnglish: "Tiếng Anh",
                .languageNameChinese: "Tiếng Trung",
                .languageNameJapanese: "Tiếng Nhật",
                .languageNameKorean: "Tiếng Hàn",
                .languageNameFrench: "Tiếng Pháp",
                .languageNameSpanish: "Tiếng Tây Ban Nha",
                .languageNameItalian: "Tiếng Ý",
                .languageNameCzech: "Tiếng Séc",
                .languageNameGerman: "Tiếng Đức",
                .languageNameRussian: "Tiếng Nga",
                .languageNameHindi: "Tiếng Hindi",
                .languageNameVietnamese: "Tiếng Việt",
                .folderNamePlaceholder: "Tên thư mục",
                .viewOnGitHub: "Mở liên kết dự án",
                .chooseButton: "Chọn",
                .exportPanelMessage: "Chọn thư mục đích để xuất dữ liệu LaunchNext",
                .importPrompt: "Nhập",
                .importPanelMessage: "Chọn thư mục được xuất từ LaunchNext trước đó",
                .legacyArchivePanelMessage: "Chọn lưu trữ Launchpad Legacy (.lmy/.zip) hoặc tệp db",
                .importSuccessfulTitle: "Nhập thành công",
                .importFailedTitle: "Nhập thất bại",
                .okButton: "OK",

                // Cập nhật
                .checkForUpdates: "Kiểm tra cập nhật",
                .checkForUpdatesButton: "Kiểm tra cập nhật",
                .checkingForUpdates: "Đang kiểm tra cập nhật...",
                .upToDate: "Bạn đang dùng phiên bản mới nhất",
                .updateAvailable: "Có bản cập nhật mới",
                .newVersion: "Phiên bản mới:",
                .downloadUpdate: "Tải bản cập nhật",
                .updateCheckFailed: "Kiểm tra cập nhật thất bại",
                .tryAgain: "Thử lại",
                .autoCheckForUpdates: "Tự động kiểm tra cập nhật",
                .versionParseError: "Lỗi phân tích phiên bản",
                .updatesRefreshButton: "Kiểm tra lại",
                .openUpdaterConfig: "Mở tệp cấu hình cập nhật"
            ],
            .simplifiedChinese: [
                .noAppsFound: "未找到任何应用",
                .searchPlaceholder: "搜索",
                .renameSearchPlaceholder: "搜索应用",
                .customTitlePlaceholder: "输入自定义名称",
                .customTitleHint: "在这里为任意应用重命名；即使重新导入或切换本地化也会保留。",
                .customTitleDefaultFormat: "默认：%@",
                .customTitleReset: "恢复默认",
                .customTitleAddButton: "添加应用",
                .customTitleEmptyTitle: "当前没有自定义名称",
                .customTitleEmptySubtitle: "点击按钮选择应用即可开始重命名；重新导入或切换语言都会保留这些设置。",
                .customTitleNoResults: "没有匹配项",
                .customTitlePickerMessage: "选择一个应用来管理显示名称。",
                .customTitleEdit: "编辑",
                .customTitleSave: "保存",
                .customTitleCancel: "取消",
                .customTitleDelete: "删除",
                .loadingApplications: "正在加载应用…",
                .showFPSOverlay: "显示 FPS",
                .showFPSOverlayDisclaimer: "当前数值仅供参考，可能与实际帧率存在差异。",
                .customIconTitle: "应用图标",
                .customIconChoose: "选择…",
                .customIconReset: "恢复默认图标",
                .customIconHint: "建议使用 512×512 的 PNG/ICNS 文件，修改会立即生效。",
                .customIconError: "无法加载所选图像。",
                .pageIndicatorOffsetLabel: "页面指示器间距",
                .pageIndicatorTopPaddingLabel: "页面指示器上方间距",
                .appTitle: "LaunchNext",
                .modifiedFrom: "基于 LaunchNow 1.3.1 修改",
                .backgroundHint: "保持后台运行：可将 LaunchNext 固定在 Dock 或使用快捷键打开窗口",
                .classicMode: "经典 Launchpad（全屏）",
                .iconSize: "图标大小",
                .iconsPerRow: "每行图标数量",
                .rowsPerPage: "每页行数",
                .iconHorizontalSpacing: "横向间距",
                .iconVerticalSpacing: "纵向间距",
                .labelFontSize: "标签字体大小",
                .iconLabelFontWeight: "图标文字粗细",
                .folderDropZoneSize: "文件夹目标区域大小",
                .folderDropZoneSizeHint: "减小该值可降低在窗口模式拖动时误建文件夹的概率。",
                .folderDropZoneSizeWithDefault: "文件夹目标区域大小（默认 %.1fx）",
                .smaller: "更小",
                .larger: "更大",
                .predictDrop: "启用落点预判",
                .showLabels: "显示图标文字",
                .useLocalizedThirdPartyTitles: "使用本地化应用名称",
                .enableAnimations: "启用滑动动画",
                .hideDockOption: "隐藏 Dock",
                .hoverMagnification: "悬停放大效果",
                .hoverMagnificationScale: "悬停放大倍率",
                .activePressEffect: "按下缩放反馈",
                .activePressScale: "按下缩放倍率",
                .animationDurationLabel: "滑动动画时长",
                .gridSizeChangeWarning: "调整网格设置可能导致部分图标位置发生变化。",
                .pageIndicatorHint: "若间距变化不明显，可下调页面指示点的位置。",
                .rememberPageTitle: "记住上次打开的页面",
                .globalShortcutTitle: "全局快捷键",
                .shortcutSetButton: "设置快捷键",
                .shortcutSaveButton: "保存",
                .shortcutClearButton: "清除",
                .shortcutNotSet: "未设置",
                .shortcutListening: "等待按键…",
                .shortcutCapturePrompt: "按下想要的快捷键组合，按 Esc 取消。",
                .shortcutNoModifierWarning: "未使用修饰键可能与其他应用冲突。",
                .scrollSensitivity: "滚动灵敏度",
                .low: "低",
                .high: "高",
                .importSystem: "导入系统 Launchpad",
                .importLegacy: "导入 Legacy (.lmy)",
                .importTip: "提示：点击“导入系统 Launchpad”即可直接导入原生布局。",
                .exportData: "导出数据",
                .importData: "导入数据",
                .refresh: "刷新",
                .showQuickRefreshButton: "显示快速刷新按钮",
                .launchAtLoginTitle: "开机静默启动",
                .launchAtLoginDescription: "登录后自动后台启动 LaunchNext，窗口保持隐藏，可随时用快捷键唤出。",
                .lockLayoutTitle: "锁定布局",
                .lockLayoutDescription: "启用后将禁止拖动图标或文件夹，关闭后可继续调整。",
                .scanSourcesIntroTitle: "管理额外的应用来源",
                .scanSourcesIntroDescription: "在这里添加外接磁盘或自定义文件夹，让其中的应用自动显示在 LaunchNext。",
                .scanSourcesPlaceholder: "功能即将上线：可在此添加或移除自定义目录，LaunchNext 会自动扫描并保持同步。",
                .scanSourcesDefaultListTitle: "系统目录",
                .scanSourcesCustomListTitle: "自定义目录",
                .scanSourcesAddButton: "添加目录…",
                .scanSourcesResetButton: "恢复默认",
                .scanSourcesEmptyHint: "还没有自定义目录，添加后可同步更多应用。",
                .scanSourcesMissingBadge: "未挂载",
                .missingAppBadge: "离线",
                .resetLayout: "重置布局",
                .resetAlertTitle: "确认要重置布局？",
                .resetAlertMessage: "这将完全重置布局：删除所有文件夹、清除保存顺序并重新扫描应用。所有自定义都会丢失。",
                .resetConfirm: "重置",
                .cancel: "取消",
                .quit: "退出",
                .languagePickerTitle: "语言",
                .appearanceModeTitle: "外观模式",
                .appearanceModeFollowSystem: "跟随系统",
                .appearanceModeLight: "浅色",
                .appearanceModeDark: "暗色",
                .folderWindowWidth: "文件夹窗口宽度",
                .folderWindowHeight: "文件夹窗口高度",
                .folderWindowSizeHint: "仅在非经典模式下生效；经典全屏使用固定布局。",
                .versionPrefix: "版本 ",
                .languageNameSystem: "跟随系统",
                .languageNameEnglish: "英語",
                .languageNameChinese: "中国語",
                .languageNameJapanese: "日本語",
                .languageNameKorean: "韩语",
                .languageNameFrench: "フランス語",
                .languageNameSpanish: "スペイン語",
                .languageNameItalian: "イタリア語",
                .languageNameCzech: "捷克语",
                .languageNameGerman: "ドイツ語",
                .languageNameRussian: "俄语",
                .languageNameHindi: "印地语",
                .languageNameVietnamese: "越南语",
                .folderNamePlaceholder: "文件夹名称",
                .viewOnGitHub: "打开项目链接",
                .chooseButton: "选择",
                .exportPanelMessage: "选择一个目标文件夹导出 LaunchNext 数据",
                .importPrompt: "导入",
                .importPanelMessage: "请选择之前由 LaunchNext 导出的文件夹",
                .legacyArchivePanelMessage: "请选择 Legacy Launchpad 归档（.lmy/.zip）或 db 文件",
                .importSuccessfulTitle: "导入成功",
                .importFailedTitle: "导入失败",
                .okButton: "确定",

                // 更新检查相关
                .checkForUpdates: "检查更新",
                .checkForUpdatesButton: "检查更新",
                .checkingForUpdates: "正在检查更新...",
                .upToDate: "已是最新版本",
                .updateAvailable: "发现新版本",
                .newVersion: "新版本：",
                .downloadUpdate: "下载更新",
                .updateCheckFailed: "更新检查失败",
                .tryAgain: "重试",
            .autoCheckForUpdates: "自动检查更新",
            .versionParseError: "版本解析错误",
            .updatesRefreshButton: "重新检查",
            .openUpdaterConfig: "打开更新配置文件",
            .updaterConfirmTitle: "使用终端安装更新？",
                .updaterConfirmMessage: "LaunchNext 将会退出并在终端中运行更新器。安装完成后会自动重新启动。\n\n如果右侧的“下载更新”按钮是透明的，请直接点击。\n这是 macOS 的 bug。⬇️",
                .updaterTerminalHint: "更新会在终端中执行，LaunchNext 将退出并自动重新启动。",
                .updaterLaunchFailed: "无法启动更新器（%@）。",
                .updaterMissingBinary: "应用包内未找到更新器。",
                .updaterNotExecutable: "更新器文件不可执行。",
                .updaterHoldPrompt: "更新完成后，按回车键关闭窗口，LaunchNext 会自动重新打开。"
            ],
            .japanese: [
                .noAppsFound: "アプリが見つかりません",
                .searchPlaceholder: "検索",
                .renameSearchPlaceholder: "アプリを検索",
                .customTitlePlaceholder: "カスタム名を入力",
                .customTitleHint: "ここでアプリ名を自由に変更できます。再インポートやローカライズ設定を切り替えても保持されます。",
                .customTitleDefaultFormat: "デフォルト: %@",
                .customTitleReset: "デフォルトに戻す",
                .customTitleAddButton: "アプリを追加",
                .customTitleEmptyTitle: "カスタム名はまだありません",
                .customTitleEmptySubtitle: "ボタンを押してアプリを選べばリネームを始められます。再インポートや言語変更後も保持されます。",
                .customTitleNoResults: "一致する項目がありません",
                .customTitlePickerMessage: "表示名を管理したいアプリを選択してください。",
                .customTitleEdit: "編集",
                .customTitleSave: "保存",
                .customTitleCancel: "キャンセル",
                .customTitleDelete: "削除",
                .loadingApplications: "アプリを読み込み中…",
                .showFPSOverlay: "FPS オーバーレイを表示",
                .showFPSOverlayDisclaimer: "簡易的な計測値であり、実際のフレームタイミングとは異なる場合があります。",
                .customIconTitle: "アプリのアイコン",
                .customIconChoose: "選択…",
                .customIconReset: "デフォルトに戻す",
                .customIconHint: "512×512 の PNG/ICNS ファイルが推奨です。変更はすぐに反映されます。",
                .customIconError: "選択した画像を読み込めませんでした。",
                .pageIndicatorOffsetLabel: "ページインジケーターの距離",
                .pageIndicatorTopPaddingLabel: "ページインジケーターの上側余白",
                .appTitle: "LaunchNext",
                .modifiedFrom: "LaunchNow 1.3.1 をベースに改良",
                .backgroundHint: "バックグラウンドで実行するには、LaunchNext を Dock に追加するかショートカットで開いてください",
                .classicMode: "クラシック Launchpad（フルスクリーン）",
                .iconSize: "アイコンサイズ",
                .iconsPerRow: "1 行あたりのアイコン数",
                .rowsPerPage: "ページあたりの行数",
                .iconHorizontalSpacing: "横方向の間隔",
                .iconVerticalSpacing: "縦方向の間隔",
                .labelFontSize: "ラベルの文字サイズ",
                .iconLabelFontWeight: "アイコンラベルの太さ",
                .folderDropZoneSize: "フォルダー作成判定エリア",
                .folderDropZoneSizeHint: "値を小さくするとウィンドウモードでフォルダーが誤って作成されにくくなります。",
                .folderDropZoneSizeWithDefault: "フォルダー作成判定エリア（既定値 %.1fx）",
                .smaller: "小さく",
                .larger: "大きく",
                .predictDrop: "ドロップ位置を予測",
                .showLabels: "アイコン名を表示",
                .useLocalizedThirdPartyTitles: "アプリ名をローカライズ",
                .enableAnimations: "スライドアニメーションを有効化",
                .hideDockOption: "Dockを隠す",
                .hoverMagnification: "選択中のアイコンを拡大",
                .hoverMagnificationScale: "拡大倍率（選択中のアイコン）",
                .activePressEffect: "押下時の縮小",
                .activePressScale: "押下時の倍率",
                .animationDurationLabel: "スライドアニメーション時間",
                .gridSizeChangeWarning: "グリッドサイズを変更すると、アイコンの配置が変わる場合があります。",
                .pageIndicatorHint: "変化が分かりにくいときは、ページインジケーターの位置を調整してください。",
                .rememberPageTitle: "最後に開いたページを記憶",
                .globalShortcutTitle: "グローバルショートカット",
                .shortcutSetButton: "ショートカットを設定",
                .shortcutSaveButton: "保存",
                .shortcutClearButton: "クリア",
                .shortcutNotSet: "未設定",
                .shortcutListening: "入力待ち…",
                .shortcutCapturePrompt: "希望するキーを押してください。Esc でキャンセルできます。",
                .shortcutNoModifierWarning: "修飾キーなしの設定は他のアプリと競合する可能性があります。",
                .scrollSensitivity: "スクロール感度",
                .low: "低",
                .high: "高",
                .importSystem: "システム Launchpad をインポート",
                .importLegacy: "Legacy (.lmy) をインポート",
                .importTip: "ヒント：『システム Launchpad をインポート』をクリックすると既存レイアウトを直接取り込めます。",
                .exportData: "データをエクスポート",
                .importData: "データをインポート",
                .refresh: "リフレッシュ",
                .showQuickRefreshButton: "クイックリフレッシュボタンを表示",
                .resetLayout: "レイアウトをリセット",
                .resetAlertTitle: "レイアウトをリセットしますか？",
                .resetAlertMessage: "すべてのフォルダを削除し、順序をリセットしてアプリを再スキャンします。カスタマイズは失われます。",
                .resetConfirm: "リセット",
                .cancel: "キャンセル",
                .quit: "終了",
                .languagePickerTitle: "言語",
                .appearanceModeTitle: "外観モード",
                .appearanceModeFollowSystem: "システムに合わせる",
                .appearanceModeLight: "ライト",
                .appearanceModeDark: "ダーク",
                .folderWindowWidth: "フォルダーウィンドウの幅",
                .folderWindowHeight: "フォルダーウィンドウの高さ",
                .folderWindowSizeHint: "ウィンドウモードでのみ有効。クラシック全画面では固定サイズです。",
                .versionPrefix: "v",
                .languageNameSystem: "システムに従う",
                .languageNameEnglish: "Anglais",
                .languageNameChinese: "Chinois",
                .languageNameJapanese: "Japonais",
                .languageNameKorean: "Coréen",
                .languageNameFrench: "Français",
                .languageNameSpanish: "Espagnol",
                .languageNameItalian: "Italien",
                .languageNameCzech: "Tchèque",
                .languageNameGerman: "Allemand",
                .languageNameRussian: "Russe",
                .languageNameHindi: "Hindi",
                .languageNameVietnamese: "Vietnamien",
                .folderNamePlaceholder: "フォルダ名",
                .viewOnGitHub: "プロジェクトリンクを開く",
                .chooseButton: "選択",
                .exportPanelMessage: "LaunchNext のデータを書き出す保存先フォルダを選択してください",
                .importPrompt: "インポート",
                .importPanelMessage: "以前 LaunchNext から書き出したフォルダを選択してください",
                .legacyArchivePanelMessage: "Legacy Launchpad アーカイブ（.lmy/.zip）または db ファイルを選択してください",
                .importSuccessfulTitle: "インポート成功",
                .importFailedTitle: "インポート失敗",
                .okButton: "OK",

                // 更新検査関連
                .checkForUpdates: "アップデートを確認",
                .checkForUpdatesButton: "アップデートを確認",
                .checkingForUpdates: "アップデートを確認中...",
                .upToDate: "最新版です",
                .updateAvailable: "アップデートが利用可能",
                .newVersion: "新しいバージョン：",
                .downloadUpdate: "アップデートをダウンロード",
                .updateCheckFailed: "アップデート確認に失敗",
                .tryAgain: "再試行",
            .autoCheckForUpdates: "自動でアップデートを確認",
            .versionParseError: "バージョン解析エラー",
            .updatesRefreshButton: "再チェック",
            .openUpdaterConfig: "アップデート設定ファイルを開く",
            .updaterConfirmTitle: "ターミナルでアップデートをインストールしますか？",
                .updaterConfirmMessage: "LaunchNext は終了し、ターミナル上のアップデーターが起動します。インストール完了後は自動的に再起動します。\n\n右側の「アップデートをダウンロード」ボタンが透明に見えても、そのままクリックしてください。\nこれは macOS の不具合です。⬇️",
                .updaterTerminalHint: "アップデートはターミナルで実行されます。LaunchNext は終了し、自動で再起動します。",
                .updaterLaunchFailed: "アップデーターの起動に失敗しました（%@）。",
                .updaterMissingBinary: "アプリ内にアップデーターが見つかりません。",
                .updaterNotExecutable: "アップデーターが実行可能ではありません。",
                .updaterHoldPrompt: "アップデート後は Enter キーを押してこのウィンドウを閉じてください。LaunchNext は自動的に再起動します。"
            ],
            .korean: [
                .noAppsFound: "앱을 찾을 수 없어요",
                .searchPlaceholder: "검색",
                .renameSearchPlaceholder: "앱 검색",
                .customTitlePlaceholder: "사용자 지정 이름 입력",
                .customTitleHint: "여기에서 앱 이름을 변경할 수 있어요. 다시 가져오거나 언어를 바꿔도 유지돼요.",
                .customTitleDefaultFormat: "기본값: %@",
                .customTitleReset: "기본값으로 복원",
                .customTitleAddButton: "앱 추가",
                .customTitleEmptyTitle: "사용자 지정 이름이 없어요",
                .customTitleEmptySubtitle: "버튼을 눌러 앱을 선택하면 이름 변경을 시작할 수 있어요. 가져오기나 언어 변경 후에도 유지돼요.",
                .customTitleNoResults: "일치하는 항목이 없어요",
                .customTitlePickerMessage: "표시 이름을 관리할 앱을 선택하세요.",
                .customTitleEdit: "편집",
                .customTitleSave: "저장",
                .customTitleCancel: "취소",
                .customTitleDelete: "삭제",
                .loadingApplications: "앱을 불러오는 중…",
                .showFPSOverlay: "FPS 오버레이 표시",
                .showFPSOverlayDisclaimer: "대략적인 수치로 실제 프레임 속도와 다를 수 있어요.",
                .customIconTitle: "앱 아이콘",
                .customIconChoose: "선택…",
                .customIconReset: "기본 아이콘으로 복원",
                .customIconHint: "512×512 PNG/ICNS 파일을 권장해요. 변경 사항은 즉시 적용돼요.",
                .customIconError: "선택한 이미지를 불러올 수 없어요.",
                .pageIndicatorOffsetLabel: "페이지 지시점 간격",
                .pageIndicatorTopPaddingLabel: "페이지 지시점 위 여백",
                .appTitle: "LaunchNext",
                .modifiedFrom: "LaunchNow 1.3.1을 기반으로 modified",
                .backgroundHint: "백그라운드에서 실행하려면 LaunchNext를 Dock에 고정하거나 단축키로 창을 여세요. 단축키는 '개인 설정'에서 등록할 수 있어요.",
                .classicMode: "클래식 Launchpad(전체 화면)",
                .iconSize: "아이콘 크기",
                .iconsPerRow: "행당 아이콘 수",
                .rowsPerPage: "페이지당 행 수",
                .iconHorizontalSpacing: "가로 간격",
                .iconVerticalSpacing: "세로 간격",
                .labelFontSize: "레이블 글자 크기",
                .iconLabelFontWeight: "아이콘 라벨 두께",
                .folderDropZoneSize: "폴더 생성 감지 영역",
                .folderDropZoneSizeHint: "값을 줄이면 창 모드에서 아이콘을 끌 때 실수로 폴더가 만들어질 가능성이 줄어듭니다.",
                .folderDropZoneSizeWithDefault: "폴더 생성 감지 영역 (기본값 %.1fx)",
                .smaller: "작게",
                .larger: "크게",
                .predictDrop: "놓을 위치 예측",
                .showLabels: "아이콘 이름 표시",
                .useLocalizedThirdPartyTitles: "번역된 앱 이름 사용",
                .enableAnimations: "슬라이드 애니메이션 사용",
                .hideDockOption: "Dock 숨기기",
                .hoverMagnification: "호버 확대",
                .hoverMagnificationScale: "호버 확대 배율",
                .activePressEffect: "누를 때 피드백",
                .activePressScale: "누를 때 배율",
                .animationDurationLabel: "슬라이드 애니메이션 길이",
                .gridSizeChangeWarning: "격자 크기를 바꾸면 일부 아이콘 위치가 변경될 수 있어요.",
                .pageIndicatorHint: "변화가 미미하다면 아래에서 페이지 지시점 위치를 조정하세요.",
                .rememberPageTitle: "마지막으로 연 페이지 기억",
                .globalShortcutTitle: "전역 단축키",
                .shortcutSetButton: "단축키 설정",
                .shortcutSaveButton: "저장",
                .shortcutClearButton: "지우기",
                .shortcutNotSet: "설정되지 않음",
                .shortcutListening: "키 입력 대기 중…",
                .shortcutCapturePrompt: "원하는 키 조합을 누르세요. Esc로 취소해요.",
                .shortcutNoModifierWarning: "보조키 설정을 하지않으면 다른 앱과 충돌할 수 있어요.",
                .scrollSensitivity: "스크롤 민감도",
                .low: "낮음",
                .high: "높음",
                .importSystem: "시스템 Launchpad 가져오기",
                .importLegacy: "Legacy (.lmy) 가져오기",
                .importTip: "팁: ‘시스템 Launchpad 가져오기’를 누르면 기본 Launchpad 배치를 바로 불러와요.",
                .exportData: "데이터 내보내기",
                .importData: "데이터 가져오기",
                .refresh: "새로 고침",
                .showQuickRefreshButton: "빠른 새로 고침 버튼 표시",
                .resetLayout: "레이아웃 초기화",
                .resetAlertTitle: "레이아웃을 초기화할까요?",
                .resetAlertMessage: "모든 폴더를 삭제하고 저장된 순서를 지운 뒤 앱을 다시 스캔해요. 모든 사용자 설정이 사라져요.",
                .resetConfirm: "초기화",
                .cancel: "취소",
                .quit: "종료",
                .languagePickerTitle: "언어",
                .appearanceModeTitle: "모양",
                .appearanceModeFollowSystem: "시스템과 동일",
                .appearanceModeLight: "라이트",
                .appearanceModeDark: "다크",
                .folderWindowWidth: "폴더 창 너비",
                .folderWindowHeight: "폴더 창 높이",
                .folderWindowSizeHint: "창 모드에서만 적용돼요. 클래식 전체 화면은 고정 레이아웃을 사용해요.",
                .versionPrefix: "v",
                .languageNameSystem: "시스템과 동일",
                .languageNameEnglish: "영어",
                .languageNameChinese: "중국어",
                .languageNameJapanese: "일본어",
                .languageNameKorean: "한국어",
                .languageNameFrench: "프랑스어",
                .languageNameSpanish: "스페인어",
                .languageNameItalian: "이탈리아어",
                .languageNameCzech: "체코어",
                .languageNameGerman: "독일어",
                .languageNameRussian: "러시아어",
                .languageNameHindi: "힌디어",
                .languageNameVietnamese: "베트남어",
                .folderNamePlaceholder: "폴더 이름",
                .viewOnGitHub: "프로젝트 링크 열기",
                .chooseButton: "선택",
                .exportPanelMessage: "LaunchNext 데이터를 내보낼 폴더를 선택해주세요",
                .importPrompt: "가져오기",
                .importPanelMessage: "LaunchNext에서 내보낸 폴더를 선택해주세요",
                .legacyArchivePanelMessage: "Legacy Launchpad 아카이브(.lmy/.zip) 또는 db 파일을 선택해주세요",
                .importSuccessfulTitle: "가져오기에 성공했어요",
                .importFailedTitle: "가져오기에 실패했어요",
                .okButton: "확인",

                // 업데이트 관련
                .checkForUpdates: "업데이트 확인",
                .checkForUpdatesButton: "업데이트 확인",
                .checkingForUpdates: "업데이트를 확인하고 있어요",
                .upToDate: "최신 버전이에요",
                .updateAvailable: "업데이트가 있어요",
                .newVersion: "새 버전:",
                .downloadUpdate: "업데이트 다운로드",
                .updateCheckFailed: "업데이트 확인에 실패했어요",
                .tryAgain: "다시 시도하기",
                .autoCheckForUpdates: "업데이트 자동 확인",
                .versionParseError: "버전 분석 오류",
                .updatesRefreshButton: "다시 확인하기",
                .openUpdaterConfig: "업데이트 구성 파일 열기",
                .updaterConfirmTitle: "터미널에서 업데이트를 설치할까요?",
                .updaterConfirmMessage: "LaunchNext가 종료되고 터미널 기반 업데이터가 실행될거에요. 설치가 끝나면 앱이 자동으로 다시 열려요.\n\n오른쪽의 '업데이트 다운로드' 버튼이 투명해 보여도 그냥 눌러 주세요.\nmacOS 버그예요.⬇️",
                .updaterTerminalHint: "업데이트는 터미널에서 진행돼요. LaunchNext는 종료 후 자동으로 다시 실행돼요.",
                .updaterLaunchFailed: "업데이터를 시작하지 못했어요(%@).",
                .updaterMissingBinary: "앱 번들에서 업데이터를 찾을 수 없어요",
                .updaterNotExecutable: "업데이터 파일을 실행할 수 없어요",
                .updaterHoldPrompt: "업데이트가 끝나면 Enter 키를 눌러 창을 닫으세요. LaunchNext가 자동으로 다시 열려요."
            ],
            .french: [
                .noAppsFound: "Aucune application trouvée",
                .searchPlaceholder: "Recherche",
                .renameSearchPlaceholder: "Rechercher une application",
                .customTitlePlaceholder: "Saisir un nom personnalisé",
                .customTitleHint: "Renommez vos applications ici. Les noms personnalisés restent même après réimportation ou changement de langue.",
                .customTitleDefaultFormat: "Nom par défaut : %@",
                .customTitleReset: "Restaurer le nom par défaut",
                .customTitleAddButton: "Ajouter une application",
                .customTitleEmptyTitle: "Aucun nom personnalisé",
                .customTitleEmptySubtitle: "Sélectionnez une application pour commencer à la renommer. Les noms personnalisés restent après réimportation ou changement de langue.",
                .customTitleNoResults: "Aucun résultat",
                .customTitlePickerMessage: "Choisissez l’application dont vous souhaitez modifier le nom",
                .customTitleEdit: "Modifier",
                .customTitleSave: "Enregistrer",
                .customTitleCancel: "Annuler",
                .customTitleDelete: "Supprimer",
                .loadingApplications: "Chargement des applications…",
                .showFPSOverlay: "Afficher le nombre d'image par seconde",
                .showFPSOverlayDisclaimer: "Valeur indicative qui peut ne pas refléter précisément le rafraîchissement réel.",
                .customIconTitle: "Icône de l’application",
                .customIconChoose: "Choisir…",
                .customIconReset: "Réinitialiser l’icône",
                .customIconHint: "Utilisez de préférence un fichier PNG/ICNS 512×512. Les changements sont appliqués immédiatement.",
                .customIconError: "Impossible de charger l’image sélectionnée.",
                .pageIndicatorOffsetLabel: "Espacement des indicateurs de pages",
                .pageIndicatorTopPaddingLabel: "Marge supérieure de l’indicateur",
                .appTitle: "LaunchNext",
                .modifiedFrom: "Basé sur LaunchNow 1.3.1",
                .backgroundHint: "Pour exécuter LaunchNext en arrière-plan, épinglez l'application au Dock ou utilisez un raccourci clavier pour ouvrir la fenêtre.",
                .classicMode: "Plein écran",
                .iconSize: "Taille des icônes",
                .iconsPerRow: "Icônes par ligne",
                .rowsPerPage: "Lignes par page",
                .iconHorizontalSpacing: "Espacement horizontal",
                .iconVerticalSpacing: "Espacement vertical",
                .labelFontSize: "Taille de la police des noms des applications",
                .iconLabelFontWeight: "Épaisseur du texte des icônes",
                .folderDropZoneSize: "Taille de la zone de création de dossier",
                .folderDropZoneSizeHint: "Réduisez la valeur pour limiter la création involontaire de dossiers en mode fenêtré.",
                .folderDropZoneSizeWithDefault: "Taille de la zone de création de dossier (Par défaut : %.1fx)",
                .smaller: "Petites",
                .larger: "Grandes",
                .predictDrop: "Prédire la position de placement",
                .showLabels: "Afficher les noms des applications",
                .useLocalizedThirdPartyTitles: "Afficher les noms des applications dans la langue du système",
                .enableAnimations: "Animation de transition",
                .hideDockOption: "Masquer le Dock",
                .hoverMagnification: "Effet de zoom au survol",
                .hoverMagnificationScale: "Facteur de zoom au survol",
                .activePressEffect: "Effet de zoom arrière lors du clic",
                .activePressScale: "Facteur de zoom arrière lors du clic",
                .animationDurationLabel: "Durée de l’animation de transition",
                .gridSizeChangeWarning: "Modifier la taille de la grille peut déplacer certaines icônes.",
                .pageIndicatorHint: "Si le changement semble subtil, ajustez l’espacement des indicateurs de pages ci-dessous.",
                .rememberPageTitle: "Mémoriser la dernière page ouverte",
                .globalShortcutTitle: "Raccourci global",
                .shortcutSetButton: "Définir le raccourci",
                .shortcutSaveButton: "Enregistrer",
                .shortcutClearButton: "Effacer",
                .shortcutNotSet: "Aucun",
                .shortcutListening: "En écoute…",
                .shortcutCapturePrompt: "Appuyez sur le raccourci souhaité. Échap pour annuler.",
                .shortcutNoModifierWarning: "Sans modificateur, le raccourci risque d’entrer en conflit.",
                .scrollSensitivity: "Sensibilité de défilement",
                .low: "Faible",
                .high: "Élevée",
                .importSystem: "Importer le Launchpad système",
                .importLegacy: "Importer un fichier .lmy",
                .importTip: "Astuce : cliquez sur « Importer le Launchpad système » pour récupérer la disposition d’origine.",
                .exportData: "Exporter les données",
                .importData: "Importer des données",
                .refresh: "Actualiser",
                .showQuickRefreshButton: "Afficher le bouton de rafraîchissement rapide",
                .resetLayout: "Réinitialiser la disposition",
                .resetAlertTitle: "Confirmer la réinitialisation ?",
                .resetAlertMessage: "La disposition des icônes sera réinitialisée, les dossiers supprimés et les applications rescannées. Toutes les personnalisations seront donc perdues.",
                .resetConfirm: "Réinitialiser",
                .cancel: "Annuler",
                .quit: "Quitter",
                .languagePickerTitle: "Langue",
                .appearanceModeTitle: "Thème",
                .appearanceModeFollowSystem: "Défini par le système",
                .appearanceModeLight: "Clair",
                .appearanceModeDark: "Sombre",
                .folderWindowWidth: "Largeur de la fenêtre des dossiers",
                .folderWindowHeight: "Hauteur de la fenêtre des dossiers",
                .folderWindowSizeHint: "S’applique uniquement en mode fenêtre, le mode plein écran utilise une taille fixe.",
                .versionPrefix: "v",
                .languageNameSystem: "Définie par le système",
                .languageNameEnglish: "English",
                .languageNameChinese: "中文",
                .languageNameJapanese: "日本語",
                .languageNameKorean: "韩语",
                .languageNameFrench: "Français",
                .languageNameSpanish: "Español",
                .languageNameItalian: "Italiano",
                .languageNameCzech: "Tchèque",
                .languageNameGerman: "Deutsch",
                .languageNameRussian: "Русский",
                .languageNameHindi: "Hindi",
                .folderNamePlaceholder: "Nom du dossier",
                .viewOnGitHub: "Ouvrir le lien du projet",
                .chooseButton: "Choisir",
                .exportPanelMessage: "Choisissez un dossier de destination pour exporter les données de LaunchNext",
                .importPrompt: "Importer",
                .importPanelMessage: "Sélectionnez un dossier précédemment exporté depuis LaunchNext",
                .legacyArchivePanelMessage: "Sélectionnez une archive Launchpad Legacy (.lmy/.zip) ou un fichier db",
                .importSuccessfulTitle: "Import réussi",
                .importFailedTitle: "Import échoué",
                .okButton: "OK",

                // Vérification des mises à jour
                .checkForUpdates: "Vérification des mises à jour",
                .checkForUpdatesButton: "Vérifier les mises à jour",
                .checkingForUpdates: "Vérification en cours...",
                .upToDate: "LaunchNext est à jour",
                .updateAvailable: "Mise à jour disponible",
                .newVersion: "Nouvelle version :",
                .downloadUpdate: "Télécharger la mise à jour",
                .updateCheckFailed: "Échec de la vérification de mise à jour",
                .tryAgain: "Réessayer",
                .autoCheckForUpdates: "Vérification automatique",
                .versionParseError: "Erreur d'analyse de version",
                .updatesRefreshButton: "Vérifier à nouveau",
                .openUpdaterConfig: "Ouvrir le fichier de configuration des mises à jour",
                .updaterConfirmTitle: "Installer la mise à jour via le Terminal ?",
                .updaterConfirmMessage: "LaunchNext va se fermer et lancer le programme de mise à jour en mode Terminal. L’application se relancera automatiquement une fois l’installation terminée.\n\nSi le bouton Télécharger la mise à jour à droite paraît transparent, cliquez dessus malgré tout.\nIl s’agit d’un bug de macOS.⬇️",
                .updaterTerminalHint: "La mise à jour s’exécute dans le Terminal. LaunchNext va se fermer puis se relancer automatiquement.",
                .updaterLaunchFailed: "Échec du lancement du programme de mise à jour (%@).",
                .updaterMissingBinary: "Programme de mise à jour introuvable dans le paquet de l’application.",
                .updaterNotExecutable: "Le programme de mise à jour n’est pas exécutable.",
                .updaterHoldPrompt: "Appuyez sur Entrée pour fermer cette fenêtre. LaunchNext va se relancer automatiquement."
            ],
            .spanish: [
                .noAppsFound: "No se encontraron apps",
                .searchPlaceholder: "Buscar",
                .renameSearchPlaceholder: "Buscar app",
                .customTitlePlaceholder: "Escribe un nombre personalizado",
                .customTitleHint: "Renombra cualquier app aquí. Los nombres personalizados se conservan tras volver a importar o cambiar la localización.",
                .customTitleDefaultFormat: "Predeterminado: %@",
                .customTitleReset: "Restaurar predeterminado",
                .customTitleAddButton: "Agregar aplicación",
                .customTitleEmptyTitle: "Aún no hay nombres personalizados",
                .customTitleEmptySubtitle: "Elige una app para empezar a renombrarla. Los nombres personalizados se conservan aunque reimportes o cambies de idioma.",
                .customTitleNoResults: "Sin coincidencias",
                .customTitlePickerMessage: "Selecciona la aplicación cuyo título quieres gestionar.",
                .customTitleEdit: "Editar",
                .customTitleSave: "Guardar",
                .customTitleCancel: "Cancelar",
                .customTitleDelete: "Eliminar",
                .loadingApplications: "Cargando aplicaciones…",
                .showFPSOverlay: "Mostrar overlay de FPS",
                .showFPSOverlayDisclaimer: "Medición aproximada; puede no coincidir con la cadencia real de cuadros.",
                .customIconTitle: "Icono de la aplicación",
                .customIconChoose: "Elegir…",
                .customIconReset: "Restaurar icono predeterminado",
                .customIconHint: "Se recomienda un archivo PNG/ICNS de 512×512. Los cambios se aplican al instante.",
                .customIconError: "No se pudo cargar la imagen seleccionada.",
                .pageIndicatorOffsetLabel: "Separación del indicador de página",
                .pageIndicatorTopPaddingLabel: "Espacio superior del indicador de página",
                .appTitle: "LaunchNext",
                .modifiedFrom: "Modificado a partir de LaunchNow versión 1.3.1",
                .backgroundHint: "Para ejecutarlo en segundo plano, fija LaunchNext en el Dock o usa atajos de teclado para abrir la ventana",
                .classicMode: "Launchpad clásico (pantalla completa)",
                .iconSize: "Tamaño de iconos",
                .iconsPerRow: "Iconos por fila",
                .rowsPerPage: "Filas por página",
                .iconHorizontalSpacing: "Espaciado horizontal",
                .iconVerticalSpacing: "Espaciado vertical",
                .labelFontSize: "Tamaño de fuente de las etiquetas",
                .iconLabelFontWeight: "Grosor del texto del icono",
                .folderDropZoneSize: "Tamaño de la zona para crear carpetas",
                .folderDropZoneSizeHint: "Reduce el valor para evitar crear carpetas por accidente al arrastrar en modo ventana.",
                .folderDropZoneSizeWithDefault: "Tamaño de la zona para crear carpetas (Predeterminado: %.1fx)",
                .smaller: "Más pequeño",
                .larger: "Más grande",
                .predictDrop: "Predecir posición de caída",
                .showLabels: "Mostrar nombres de iconos",
                .useLocalizedThirdPartyTitles: "Usar nombres localizados",
                .enableAnimations: "Activar la animación de deslizamiento",
                .hideDockOption: "Ocultar Dock",
                .hoverMagnification: "Ampliación al pasar el cursor",
                .hoverMagnificationScale: "Factor de ampliación",
                .activePressEffect: "Retroalimentación al pulsar",
                .activePressScale: "Factor de pulsación",
                .animationDurationLabel: "Duración de la animación de deslizamiento",
                .gridSizeChangeWarning: "Cambiar el tamaño de la cuadrícula puede recolocar algunos iconos.",
                .pageIndicatorHint: "Si notas poco cambio, ajusta el indicador de página más abajo.",
                .rememberPageTitle: "Recordar la última página abierta",
                .globalShortcutTitle: "Atajo global",
                .shortcutSetButton: "Definir atajo",
                .shortcutSaveButton: "Guardar",
                .shortcutClearButton: "Limpiar",
                .shortcutNotSet: "Sin definir",
                .shortcutListening: "Escuchando…",
                .shortcutCapturePrompt: "Pulsa la combinación deseada. Esc para cancelar.",
                .shortcutNoModifierWarning: "Sin modificadores puede entrar en conflicto con otras apps.",
                .scrollSensitivity: "Sensibilidad de desplazamiento",
                .low: "Baja",
                .high: "Alta",
                .importSystem: "Importar Launchpad del sistema",
                .importLegacy: "Importar Legacy (.lmy)",
                .importTip: "Consejo: haz clic en «Importar Launchpad del sistema» para traer directamente tu disposición actual.",
                .exportData: "Exportar datos",
                .importData: "Importar datos",
                .refresh: "Actualizar",
                .showQuickRefreshButton: "Mostrar botón de actualización rápida",
                .resetLayout: "Reiniciar diseño",
                .resetAlertTitle: "¿Reiniciar el diseño?",
                .resetAlertMessage: "Esto restablecerá por completo el diseño: eliminará carpetas, limpiará el orden y volverá a escanear las apps. Se perderán todas las personalizaciones.",
                .resetConfirm: "Reiniciar",
                .cancel: "Cancelar",
                .quit: "Salir",
                .languagePickerTitle: "Idioma",
                .appearanceModeTitle: "Apariencia",
                .appearanceModeFollowSystem: "Seguir al sistema",
                .appearanceModeLight: "Claro",
                .appearanceModeDark: "Oscuro",
                .folderWindowWidth: "Ancho de la ventana de carpetas",
                .folderWindowHeight: "Alto de la ventana de carpetas",
                .folderWindowSizeHint: "Solo se aplica en modo ventana; el modo clásico a pantalla completa usa un tamaño fijo.",
                .versionPrefix: "v",
                .languageNameSystem: "Seguir sistema",
                .languageNameEnglish: "English",
                .languageNameChinese: "中文",
                .languageNameJapanese: "日本語",
                .languageNameKorean: "한국어",
                .languageNameFrench: "Français",
                .languageNameSpanish: "Español",
                .languageNameItalian: "Italiano",
                .languageNameCzech: "Checo",
                .languageNameGerman: "Deutsch",
                .languageNameRussian: "Русский",
                .languageNameVietnamese: "Vietnamita",
                .folderNamePlaceholder: "Nombre de la carpeta",
                .viewOnGitHub: "Abrir enlace del proyecto",
                .chooseButton: "Elegir",
                .exportPanelMessage: "Elige una carpeta de destino para exportar los datos de LaunchNext",
                .importPrompt: "Importar",
                .importPanelMessage: "Selecciona una carpeta previamente exportada desde LaunchNext",
                .legacyArchivePanelMessage: "Elige un archivo de Launchpad Legacy (.lmy/.zip) o un archivo db",
                .importSuccessfulTitle: "Importación completada",
                .importFailedTitle: "Importación fallida",
                .okButton: "OK",

                // Verificación de actualizaciones
                .checkForUpdates: "Buscar actualizaciones",
                .checkForUpdatesButton: "Buscar actualizaciones",
                .checkingForUpdates: "Buscando actualizaciones...",
                .upToDate: "Estás actualizado",
                .updateAvailable: "Actualización disponible",
                .newVersion: "Nueva versión:",
                .downloadUpdate: "Descargar actualización",
                .updateCheckFailed: "Error al buscar actualizaciones",
                .tryAgain: "Intentar de nuevo",
                .autoCheckForUpdates: "Buscar actualizaciones automáticamente",
                .versionParseError: "Error de análisis de versión",
                .updatesRefreshButton: "Comprobar de nuevo",
                .openUpdaterConfig: "Abrir archivo de configuración de actualización",
                .updaterConfirmTitle: "¿Instalar la actualización en Terminal?",
                .updaterConfirmMessage: "LaunchNext se cerrará y abrirá el actualizador en Terminal. La aplicación se volverá a abrir automáticamente cuando termine la instalación.\n\nSi el botón Descargar actualización de la derecha se ve transparente, haz clic igualmente.\nEs un error de macOS.⬇️",
                .updaterTerminalHint: "La actualización se ejecuta en Terminal. LaunchNext se cerrará y se abrirá de nuevo automáticamente.",
                .updaterLaunchFailed: "No se pudo iniciar el actualizador (%@).",
                .updaterMissingBinary: "No se encontró el actualizador dentro del paquete de la app.",
                .updaterNotExecutable: "El actualizador no es ejecutable.",
                .updaterHoldPrompt: "Cuando termine la actualización, pulse Intro para cerrar esta ventana. LaunchNext se abrirá automáticamente."
            ],
            .italian: [
                .noAppsFound: "Nessuna app trovata",
                .searchPlaceholder: "Cerca",
                .renameSearchPlaceholder: "Cerca app",
                .customTitlePlaceholder: "Inserisci un nome personalizzato",
                .customTitleHint: "Rinomina le app qui. I titoli personalizzati persistono dopo importazioni e cambi di lingua.",
                .customTitleDefaultFormat: "Predefinito: %@",
                .customTitleReset: "Ripristina predefinito",
                .customTitleAddButton: "Aggiungi applicazione",
                .customTitleEmptyTitle: "Ancora nessun titolo personalizzato",
                .customTitleEmptySubtitle: "Scegli un'app per iniziare a rinominarla. I titoli personalizzati rimangono anche dopo importazioni o cambi di localizzazione.",
                .customTitleNoResults: "Nessuna corrispondenza",
                .customTitlePickerMessage: "Seleziona un'app per gestirne il titolo.",
                .customTitleEdit: "Modifica",
                .customTitleSave: "Salva",
                .customTitleCancel: "Annulla",
                .customTitleDelete: "Rimuovi",
                .loadingApplications: "Caricamento applicazioni…",
                .showFPSOverlay: "Mostra overlay FPS",
                .showFPSOverlayDisclaimer: "Valore approssimativo; potrebbe non riflettere il frame pacing reale.",
                .customIconTitle: "Icona applicazione",
                .customIconChoose: "Scegli…",
                .customIconReset: "Ripristina predefinito",
                .customIconHint: "Sono consigliati PNG/ICNS 512×512. Le modifiche vengono applicate istantaneamente.",
                .customIconError: "Impossibile caricare l'immagine selezionata.",
                .pageIndicatorOffsetLabel: "Spaziatura indicatore pagina",
                .pageIndicatorTopPaddingLabel: "Margine superiore dell’indicatore",
                .folderWindowWidth: "Larghezza finestra cartella",
                .folderWindowHeight: "Altezza finestra cartella",
                .folderWindowSizeHint: "Si applica solo alla modalità finestra; la modalità classica a schermo intero usa un layout fisso.",
                .appTitle: "LaunchNext",
                .modifiedFrom: "Derivato da LaunchNow versione 1.3.1",
                .backgroundHint: "Esegui in background: aggiungi LaunchNext al Dock o usa scorciatoie da tastiera per aprire la finestra dell'app",
                .classicMode: "Launchpad classico (schermo intero)",
                .iconSize: "Dimensione icone",
                .iconsPerRow: "Icone per riga",
                .rowsPerPage: "Righe per pagina",
                .iconHorizontalSpacing: "Spaziatura orizzontale",
                .iconVerticalSpacing: "Spaziatura verticale",
                .labelFontSize: "Dimensione font etichette",
                .iconLabelFontWeight: "Spessore etichetta icona",
                .folderDropZoneSize: "Area di creazione cartelle",
                .folderDropZoneSizeHint: "Riduci il valore per evitare di creare cartelle per errore in modalità finestra.",
                .folderDropZoneSizeWithDefault: "Area di creazione cartelle (Predefinito: %.1fx)",
                .smaller: "Più piccolo",
                .larger: "Più grande",
                .predictDrop: "Prevedi posizione di rilascio",
                .showLabels: "Mostra etichette sotto le icone",
                .useLocalizedThirdPartyTitles: "Usa nomi delle app localizzati",
                .enableAnimations: "Abilita animazione di scorrimento",
                .hideDockOption: "Nascondi Dock",
                .hoverMagnification: "Ingrandimento al passaggio del mouse",
                .hoverMagnificationScale: "Fattore di ingrandimento",
                .activePressEffect: "Effetto di riduzione al clic",
                .activePressScale: "Fattore di riduzione al clic",
                .animationDurationLabel: "Durata animazione",
                .gridSizeChangeWarning: "Cambiare la dimensione della griglia può spostare alcune icone.",
                .pageIndicatorHint: "Se la spaziatura verticale è poco evidente, regola l'indicatore delle pagine qui sotto.",
                .rememberPageTitle: "Ricorda l'ultima pagina aperta",
                .globalShortcutTitle: "Scorciatoia globale",
                .shortcutSetButton: "Imposta scorciatoia",
                .shortcutSaveButton: "Salva",
                .shortcutClearButton: "Cancella",
                .shortcutNotSet: "Non impostato",
                .shortcutListening: "In ascolto…",
                .shortcutCapturePrompt: "Premi la combinazione di tasti desiderata. Premi Esc per annullare.",
                .shortcutNoModifierWarning: "Non utilizzare modificatori può causare conflitti con altre app.",
                .scrollSensitivity: "Sensibilità scorrimento",
                .low: "Bassa",
                .high: "Alta",
                .importSystem: "Importa Launchpad di sistema",
                .importLegacy: "Importa Legacy (.lmy)",
                .importTip: "Suggerimento: clicca su 'Importa Launchpad di sistema' per importare direttamente dal Launchpad di sistema.",
                .exportData: "Esporta dati",
                .importData: "Importa dati",
                .refresh: "Aggiorna",
                .showQuickRefreshButton: "Mostra pulsante di aggiornamento rapido",
                .launchAtLoginTitle: "Avvio silenzioso al login",
                .launchAtLoginDescription: "Dopo l'accesso a macOS, LaunchNext si avvia in background senza mostrare la finestra.",
                .lockLayoutTitle: "Blocca layout",
                .lockLayoutDescription: "Impedisce di spostare app e cartelle finché l’opzione è attiva.",
                .scanSourcesIntroTitle: "Gestisci librerie di app aggiuntive",
                .scanSourcesIntroDescription: "Aggiungi dischi esterni o cartelle personalizzate in modo che LaunchNext possa rilevare app oltre le posizioni predefinite.",
                .scanSourcesPlaceholder: "Prossimamente: scegli qui le cartelle personalizzate e LaunchNext le analizzerà mantenendole sincronizzate.",
                .scanSourcesDefaultListTitle: "Directory di sistema",
                .scanSourcesCustomListTitle: "Directory personalizzate",
                .scanSourcesAddButton: "Aggiungi cartella…",
                .scanSourcesResetButton: "Ripristina predefiniti",
                .scanSourcesEmptyHint: "Nessuna directory personalizzata. Aggiungine una per mantenere sincronizzate le app aggiuntive.",
                .scanSourcesMissingBadge: "Offline",
                .missingAppBadge: "Offline",
                .resetLayout: "Reimposta layout",
                .resetAlertTitle: "Confermare il reset del layout?",
                .resetAlertMessage: "Questo reimposterà completamente il layout: rimuoverà le cartelle, cancellerà l'ordine salvato e riscannerà tutte le applicazioni. Tutte le personalizzazioni andranno perse.",
                .resetConfirm: "Reimposta",
                .cancel: "Annulla",
                .quit: "Esci",
                .languagePickerTitle: "Lingua",
                .appearanceModeTitle: "Aspetto",
                .appearanceModeFollowSystem: "Segui sistema",
                .appearanceModeLight: "Chiaro",
                .appearanceModeDark: "Scuro",
                .versionPrefix: "v",
                .languageNameSystem: "Segui sistema",
                .languageNameEnglish: "Inglese",
                .languageNameChinese: "Cinese",
                .languageNameJapanese: "Giapponese",
                .languageNameKorean: "Coreano",
                .languageNameFrench: "Francese",
                .languageNameSpanish: "Spagnolo",
                .languageNameItalian: "Italiano",
                .languageNameCzech: "Ceco",
                .languageNameGerman: "Tedesco",
                .languageNameRussian: "Russo",
                .languageNameHindi: "Hindi",
                .languageNameVietnamese: "Vietnamita",
                .folderNamePlaceholder: "Nome cartella",
                .viewOnGitHub: "Apri link del progetto",
                .chooseButton: "Scegli",
                .exportPanelMessage: "Scegli una cartella di destinazione per esportare i dati di LaunchNext",
                .importPrompt: "Importa",
                .importPanelMessage: "Scegli una cartella precedentemente esportata da LaunchNext",
                .legacyArchivePanelMessage: "Scegli un archivio Legacy Launchpad (.lmy/.zip) o un file db",
                .importSuccessfulTitle: "Importazione riuscita",
                .importFailedTitle: "Importazione fallita",
                .okButton: "OK",

                // Controllo aggiornamenti
                .checkForUpdates: "Controlla aggiornamenti",
                .checkForUpdatesButton: "Controlla aggiornamenti",
                .checkingForUpdates: "Controllo aggiornamenti...",
                .upToDate: "Il software è aggiornato",
                .updateAvailable: "Aggiornamento disponibile",
                .newVersion: "Nuova versione:",
                .downloadUpdate: "Scarica aggiornamento",
                .updateCheckFailed: "Controllo aggiornamenti fallito",
                .tryAgain: "Riprova",
                .autoCheckForUpdates: "Controlla aggiornamenti automaticamente",
                .versionParseError: "Errore nell’analisi della versione",
                .updatesRefreshButton: "Controlla di nuovo",
                .openUpdaterConfig: "Apri file di configurazione dell’updater",
                .updaterConfirmTitle: "Installare l’aggiornamento tramite Terminale?",
                .updaterConfirmMessage: "LaunchNext verrà chiuso e si aprirà l’updater nel Terminale. L’app si riaprirà automaticamente al termine dell’installazione.\n\nSe il pulsante Scarica aggiornamento a destra sembra trasparente, cliccaci comunque.\nÈ un bug di macOS.⬇️",
                .updaterTerminalHint: "L’aggiornamento viene eseguito nel Terminale. LaunchNext verrà chiuso e si riaprirà automaticamente.",
                .updaterLaunchFailed: "Impossibile avviare l’updater (%@).",
                .updaterMissingBinary: "Binario dell’updater non trovato nel bundle dell’app.",
                .updaterNotExecutable: "Il binario dell’updater non è eseguibile.",
                .updaterHoldPrompt: "Premi Invio per chiudere questa finestra. LaunchNext si riaprirà automaticamente."
            ],
            .czech: [
                .noAppsFound: "Nebyla nalezena žádná aplikace",
                .searchPlaceholder: "Hledat",
                .renameSearchPlaceholder: "Hledat aplikace",
                .customTitlePlaceholder: "Zadejte vlastní název",
                .customTitleHint: "Zde můžete přejmenovat aplikace. Vlastní názvy zůstanou i po importu nebo změně jazyka.",
                .customTitleDefaultFormat: "Výchozí: %@",
                .customTitleReset: "Obnovit výchozí",
                .customTitleAddButton: "Přidat aplikaci",
                .customTitleEmptyTitle: "Zatím nejsou nastaveny žádné vlastní názvy",
                .customTitleEmptySubtitle: "Vyberte aplikaci, kterou chcete přejmenovat. Vlastní názvy zůstanou zachovány i po importu nebo změně jazyka.",
                .customTitleNoResults: "Žádné výsledky",
                .customTitlePickerMessage: "Vyberte aplikaci pro správu jejího názvu.",
                .customTitleEdit: "Upravit",
                .customTitleSave: "Uložit",
                .customTitleCancel: "Zrušit",
                .customTitleDelete: "Odstranit",
                .loadingApplications: "Načítání aplikací…",
                .showFPSOverlay: "Zobrazit překrytí FPS",
                .showFPSOverlayDisclaimer: "Přibližné měření; nemusí odpovídat skutečné plynulosti snímků.",
                .customIconTitle: "Ikona aplikace",
                .customIconChoose: "Vybrat…",
                .customIconReset: "Obnovit výchozí",
                .customIconHint: "Nejlépe fungují soubory PNG/ICNS o velikosti 512×512. Změna se projeví okamžitě.",
                .customIconError: "Nepodařilo se načíst vybraný obrázek.",
                .pageIndicatorOffsetLabel: "Rozestup indikátoru stránek",
                .pageIndicatorTopPaddingLabel: "Horní odsazení indikátoru stránek",
                .folderWindowWidth: "Šířka okna složky",
                .folderWindowHeight: "Výška okna složky",
                .folderWindowSizeHint: "Platí pouze pro režim v okně; klasická celá obrazovka používá pevné rozložení.",
                .appTitle: "LaunchNext",
                .modifiedFrom: "Upraveno z LaunchNow verze 1.3.1",
                .backgroundHint: "Automatický běh na pozadí: přidejte LaunchNext do Docku nebo použijte klávesovou zkratku k otevření okna aplikace",
                .classicMode: "Klasický Launchpad (celá obrazovka)",
                .iconSize: "Velikost ikon",
                .iconsPerRow: "Ikon na řádek",
                .rowsPerPage: "Řádků na stránku",
                .iconHorizontalSpacing: "Vodorovný rozestup",
                .iconVerticalSpacing: "Svislý rozestup",
                .labelFontSize: "Velikost písma popisků",
                .iconLabelFontWeight: "Tloušťka písma popisků",
                .folderDropZoneSize: "Velikost oblasti pro vytvoření složky",
                .folderDropZoneSizeHint: "Snižte hodnotu, aby se ve Fensterovaném režimu složky při přetažení vytvářely méně často omylem.",
                .folderDropZoneSizeWithDefault: "Velikost oblasti pro vytvoření složky (Výchozí: %.1fx)",
                .smaller: "Menší",
                .larger: "Větší",
                .predictDrop: "Předvídat pozici umístění",
                .showLabels: "Zobrazit popisky pod ikonami",
                .useLocalizedThirdPartyTitles: "Používat lokalizované názvy aplikací",
                .enableAnimations: "Povolit animační přechody",
                .hideDockOption: "Skrýt Dock",
                .hoverMagnification: "Zvětšení při najetí myší",
                .hoverMagnificationScale: "Míra zvětšení při najetí",
                .activePressEffect: "Odezva při stisknutí",
                .activePressScale: "Míra zmenšení při stisku",
                .animationDurationLabel: "Délka animačního přechodu",
                .gridSizeChangeWarning: "Změna velikosti mřížky může přesunout některé ikony.",
                .pageIndicatorHint: "Pokud je svislý rozestup málo výrazný, upravte rozestup indikátoru stránek níže.",
                .rememberPageTitle: "Zapamatovat si naposledy otevřenou stránku",
                .globalShortcutTitle: "Globální zkratka",
                .shortcutSetButton: "Nastavit zkratku",
                .shortcutSaveButton: "Uložit",
                .shortcutClearButton: "Vymazat",
                .shortcutNotSet: "Nenastaveno",
                .shortcutListening: "Čekám na vstup…",
                .shortcutCapturePrompt: "Stiskněte požadovanou kombinaci kláves. Pro zrušení stiskněte Esc.",
                .shortcutNoModifierWarning: "Použití bez modifikační klávesy může kolidovat s jinými aplikacemi.",
                .scrollSensitivity: "Citlivost posouvání",
                .low: "Nízká",
                .high: "Vysoká",
                .importSystem: "Importovat systémový Launchpad",
                .importLegacy: "Importovat starší verzi (.lmy)",
                .importTip: "Tip: Klikněte na „Importovat systémový Launchpad“ pro přímý import ze systému.",
                .exportData: "Exportovat data",
                .importData: "Importovat data",
                .refresh: "Obnovit",
                .showQuickRefreshButton: "Zobrazit tlačítko rychlého obnovení",
                .resetLayout: "Obnovit rozložení",
                .resetAlertTitle: "Chcete opravdu obnovit rozložení?",
                .resetAlertMessage: "Tímto se zcela obnoví rozložení: odstraní se všechny složky, vymaže uložené pořadí a znovu se načtou všechny aplikace. Všechny vlastní úpravy budou ztraceny.",
                .resetConfirm: "Obnovit",
                .cancel: "Zrušit",
                .quit: "Ukončit",
                .languagePickerTitle: "Jazyk",
                .appearanceModeTitle: "Vzhled",
                .appearanceModeFollowSystem: "Dle systému",
                .appearanceModeLight: "Světlý",
                .appearanceModeDark: "Tmavý",
                .versionPrefix: "v",
                .languageNameSystem: "Dle systému",
                .languageNameEnglish: "Angličtina",
                .languageNameChinese: "Čínština",
                .languageNameJapanese: "Japonština",
                .languageNameKorean: "Korejština",
                .languageNameFrench: "Francouzština",
                .languageNameSpanish: "Španělština",
                .languageNameItalian: "Italština",
                .languageNameCzech: "Čeština",
                .languageNameGerman: "Němčina",
                .languageNameRussian: "Ruština",
                .languageNameHindi: "Hindština",
                .languageNameVietnamese: "Vietnamština",
                .folderNamePlaceholder: "Název složky",
                .viewOnGitHub: "Otevřít odkaz na projekt",
                .chooseButton: "Vybrat",
                .exportPanelMessage: "Vyberte cílovou složku pro export dat LaunchNext",
                .importPrompt: "Importovat",
                .importPanelMessage: "Vyberte složku, která byla dříve exportována z LaunchNext",
                .legacyArchivePanelMessage: "Vyberte starší archiv Launchpadu (.lmy/.zip) nebo databázový soubor",
                .importSuccessfulTitle: "Import úspěšný",
                .importFailedTitle: "Import selhal",
                .okButton: "OK",

                // Update
                .checkForUpdates: "Kontrola aktualizací",
                .checkForUpdatesButton: "Zkontrolovat aktualizace",
                .checkingForUpdates: "Kontrola aktualizací…",
                .upToDate: "Používáte nejnovější verzi",
                .updateAvailable: "Je k dispozici aktualizace",
                .newVersion: "Nová verze:",
                .downloadUpdate: "Stáhnout aktualizaci",
                .updateCheckFailed: "Kontrola aktualizací se nezdařila",
                .tryAgain: "Zkusit znovu",
                .autoCheckForUpdates: "Automaticky kontrolovat aktualizace",
                .versionParseError: "Chyba při zpracování verze",
                .updatesRefreshButton: "Zkontrolovat znovu",
                .openUpdaterConfig: "Otevřít konfiguraci aktualizátoru",
                .updaterConfirmTitle: "Nainstalovat aktualizaci přes Terminál?",
                .updaterConfirmMessage: "LaunchNext se ukončí a otevře aktualizátor v Terminálu. Aplikace se po dokončení instalace automaticky znovu spustí.\n\nPokud tlačítko Stáhnout aktualizaci vpravo vypadá průhledně, stejně na něj klikněte.\nJde o chybu macOS.⬇️",
                .updaterTerminalHint: "Aktualizace probíhá v Terminálu. LaunchNext se ukončí a automaticky znovu spustí.",
                .updaterLaunchFailed: "Nepodařilo se spustit aktualizátor (%@).",
                .updaterMissingBinary: "Binární soubor aktualizátoru nebyl nalezen v balíčku aplikace.",
                .updaterNotExecutable: "Binární soubor aktualizátoru není spustitelný.",
                .updaterHoldPrompt: "Stiskněte Enter pro zavření tohoto okna. LaunchNext se automaticky znovu otevře."
            ],
            .german: [
                .noAppsFound: "Keine Apps gefunden",
                .searchPlaceholder: "Suchen",
                .renameSearchPlaceholder: "Apps durchsuchen",
                .customTitlePlaceholder: "Eigenen Namen eingeben",
                .customTitleHint: "Hier kannst du jeder App einen eigenen Namen geben. Bleibt auch nach erneutem Import oder Sprachwechsel erhalten.",
                .customTitleDefaultFormat: "Standard: %@",
                .customTitleReset: "Standard wiederherstellen",
                .customTitleAddButton: "App hinzufügen",
                .customTitleEmptyTitle: "Noch keine eigenen Namen",
                .customTitleEmptySubtitle: "Wähle eine App aus, um sie umzubenennen. Eigene Namen bleiben auch nach erneutem Import oder Sprachwechsel erhalten.",
                .customTitleNoResults: "Keine Treffer",
                .customTitlePickerMessage: "Wähle die App, deren Namen du verwalten möchtest.",
                .customTitleEdit: "Bearbeiten",
                .customTitleSave: "Speichern",
                .customTitleCancel: "Abbrechen",
                .customTitleDelete: "Entfernen",
                .loadingApplications: "Apps werden geladen…",
                .showFPSOverlay: "FPS-Overlay anzeigen",
                .showFPSOverlayDisclaimer: "Nur ein Näherungswert, kann vom tatsächlichen Frame-Pacing abweichen.",
                .customIconTitle: "App-Symbol",
                .customIconChoose: "Auswählen…",
                .customIconReset: "Standard-Symbol wiederherstellen",
                .customIconHint: "Empfohlen sind PNG/ICNS-Dateien mit 512×512 Pixel. Änderungen wirken sofort.",
                .customIconError: "Das ausgewählte Bild konnte nicht geladen werden.",
                .pageIndicatorOffsetLabel: "Abstand der Seitenanzeige",
                .pageIndicatorTopPaddingLabel: "Oberer Abstand der Seitenanzeige",
                .appTitle: "LaunchNext",
                .modifiedFrom: "Basierend auf LaunchNow Version 1.3.1",
                .backgroundHint: "Für den Hintergrundbetrieb LaunchNext im Dock behalten oder mit Tastenkürzeln das Fenster öffnen",
                .classicMode: "Klassischer Launchpad (Vollbild)",
                .iconSize: "Symbolgröße",
                .iconsPerRow: "Symbole pro Zeile",
                .rowsPerPage: "Zeilen pro Seite",
                .iconHorizontalSpacing: "Horizontaler Abstand",
                .iconVerticalSpacing: "Vertikaler Abstand",
                .labelFontSize: "Schriftgröße der Beschriftung",
                .iconLabelFontWeight: "Schriftstärke der Symbolbeschriftung",
                .folderDropZoneSize: "Größe der Ordner-Erkennungszone",
                .folderDropZoneSizeHint: "Verringere den Wert, um im Fenstermodus weniger versehentlich Ordner zu erstellen.",
                .folderDropZoneSizeWithDefault: "Größe der Ordner-Erkennungszone (Standard: %.1fx)",
                .smaller: "Kleiner",
                .larger: "Größer",
                .predictDrop: "Ablageposition vorhersagen",
                .showLabels: "Beschriftungen unter Symbolen anzeigen",
                .useLocalizedThirdPartyTitles: "Lokalisierte App-Namen verwenden",
                .enableAnimations: "Slide-Animation aktivieren",
                .hideDockOption: "Dock ausblenden",
                .hoverMagnification: "Vergrößern beim Überfahren",
                .hoverMagnificationScale: "Vergrößerungsfaktor",
                .activePressEffect: "Verkleinern beim Klicken",
                .activePressScale: "Klick-Faktor",
                .animationDurationLabel: "Dauer der Slide-Animation",
                .gridSizeChangeWarning: "Das Ändern der Rastergröße kann einige Symbole neu anordnen.",
                .pageIndicatorHint: "Wirkt der Effekt gering, passe den Seitenindikator darunter an.",
                .rememberPageTitle: "Letzte geöffnete Seite merken",
                .globalShortcutTitle: "Globaler Kurzbefehl",
                .shortcutSetButton: "Kurzbefehl setzen",
                .shortcutSaveButton: "Speichern",
                .shortcutClearButton: "Löschen",
                .shortcutNotSet: "Nicht gesetzt",
                .shortcutListening: "Warten…",
                .shortcutCapturePrompt: "Drücke die gewünschte Tastenkombination. Esc zum Abbrechen.",
                .shortcutNoModifierWarning: "Ohne Modifikatortaste kann es zu Konflikten mit Apps kommen.",
                .scrollSensitivity: "Scroll-Empfindlichkeit",
                .low: "Niedrig",
                .high: "Hoch",
                .importSystem: "System-Launchpad importieren",
                .importLegacy: "Legacy (.lmy) importieren",
                .importTip: "Tipp: Klicken Sie auf „System-Launchpad importieren“, um das Layout direkt zu übernehmen.",
                .exportData: "Daten exportieren",
                .importData: "Daten importieren",
                .refresh: "Aktualisieren",
                .showQuickRefreshButton: "Schnellaktualisierungsbutton anzeigen",
                .resetLayout: "Layout zurücksetzen",
                .resetAlertTitle: "Layout wirklich zurücksetzen?",
                .resetAlertMessage: "Dies setzt das Layout vollständig zurück: Alle Ordner werden entfernt, die gespeicherte Reihenfolge gelöscht und alle Apps neu eingelesen. Anpassungen gehen verloren.",
                .resetConfirm: "Zurücksetzen",
                .cancel: "Abbrechen",
                .quit: "Beenden",
                .languagePickerTitle: "Sprache",
                .appearanceModeTitle: "Darstellung",
                .appearanceModeFollowSystem: "System folgen",
                .appearanceModeLight: "Hell",
                .appearanceModeDark: "Dunkel",
                .folderWindowWidth: "Ordnerfenster-Breite",
                .folderWindowHeight: "Ordnerfenster-Höhe",
                .folderWindowSizeHint: "Gilt nur im Fenstermodus; der klassische Vollbildmodus nutzt eine feste Größe.",
                .versionPrefix: "v",
                .languageNameSystem: "Systemsprache",
                .languageNameEnglish: "Englisch",
                .languageNameChinese: "Chinesisch",
                .languageNameJapanese: "Japanisch",
                .languageNameKorean: "Koreanisch",
                .languageNameFrench: "Französisch",
                .languageNameSpanish: "Spanisch",
                .languageNameItalian: "Italienisch",
                .languageNameCzech: "Tschechisch",
                .languageNameGerman: "Deutsch",
                .languageNameRussian: "Russisch",
                .languageNameHindi: "Hindi",
                .languageNameVietnamese: "Vietnamesisch",
                .folderNamePlaceholder: "Ordnername",
                .viewOnGitHub: "Projektlink öffnen",
                .chooseButton: "Auswählen",
                .exportPanelMessage: "Wählen Sie einen Zielordner, um die LaunchNext-Daten zu exportieren",
                .importPrompt: "Importieren",
                .importPanelMessage: "Wählen Sie einen zuvor aus LaunchNext exportierten Ordner",
                .legacyArchivePanelMessage: "Wählen Sie ein Legacy-Launchpad-Archiv (.lmy/.zip) oder eine DB-Datei",
                .importSuccessfulTitle: "Import erfolgreich",
                .importFailedTitle: "Import fehlgeschlagen",
                .okButton: "OK",

                // Update-Überprüfung
                .checkForUpdates: "Nach Updates suchen",
                .checkForUpdatesButton: "Nach Updates suchen",
                .checkingForUpdates: "Suche nach Updates...",
                .upToDate: "Sie sind auf dem neuesten Stand",
                .updateAvailable: "Update verfügbar",
                .newVersion: "Neue Version:",
                .downloadUpdate: "Update herunterladen",
                .updateCheckFailed: "Update-Prüfung fehlgeschlagen",
                .tryAgain: "Erneut versuchen",
                .autoCheckForUpdates: "Automatisch nach Updates suchen",
                .versionParseError: "Versions-Parsing-Fehler",
                .updatesRefreshButton: "Erneut prüfen",
                .openUpdaterConfig: "Updater-Konfigurationsdatei öffnen",
                .updaterConfirmTitle: "Update über das Terminal installieren?",
                .updaterConfirmMessage: "LaunchNext wird beendet und startet den Terminal-Updater. Nach Abschluss der Installation öffnet sich die App automatisch erneut.\n\nWenn die Schaltfläche Update laden rechts transparent wirkt, klicke sie trotzdem.\nDas ist ein macOS-Fehler.⬇️",
                .updaterTerminalHint: "Das Update läuft im Terminal. LaunchNext beendet sich und startet danach automatisch erneut.",
                .updaterLaunchFailed: "Updater konnte nicht gestartet werden (%@).",
                .updaterMissingBinary: "Updater wurde im App-Paket nicht gefunden.",
                .updaterNotExecutable: "Updater-Datei ist nicht ausführbar.",
                .updaterHoldPrompt: "Nach dem Update Enter drücken, um dieses Fenster zu schließen. LaunchNext wird automatisch wieder geöffnet."
            ],
            .russian: [
                .noAppsFound: "Приложения не найдены",
                .searchPlaceholder: "Поиск",
                .renameSearchPlaceholder: "Поиск приложений",
                .customTitlePlaceholder: "Введите своё название",
                .customTitleHint: "Переименовывайте приложения здесь. Пользовательские названия сохраняются даже после повторного импорта или смены локализации.",
                .customTitleDefaultFormat: "По умолчанию: %@",
                .customTitleReset: "Сбросить название",
                .customTitleAddButton: "Добавить приложение",
                .customTitleEmptyTitle: "Пользовательских названий пока нет",
                .customTitleEmptySubtitle: "Выберите приложение, чтобы начать переименование. Названия сохранятся после повторного импорта или смены языка.",
                .customTitleNoResults: "Совпадений нет",
                .customTitlePickerMessage: "Выберите приложение, название которого хотите настроить.",
                .customTitleEdit: "Редактировать",
                .customTitleSave: "Сохранить",
                .customTitleCancel: "Отмена",
                .customTitleDelete: "Удалить",
                .loadingApplications: "Загрузка приложений…",
                .showFPSOverlay: "Показывать FPS",
                .showFPSOverlayDisclaimer: "Показатель приблизительный и может отличаться от фактической частоты кадров.",
                .customIconTitle: "Значок приложения",
                .customIconChoose: "Выбрать…",
                .customIconReset: "Вернуть стандартный значок",
                .customIconHint: "Рекомендуется PNG/ICNS 512×512. Изменения применяются сразу.",
                .customIconError: "Не удалось загрузить выбранное изображение.",
                .pageIndicatorOffsetLabel: "Отступ индикатора страниц",
                .pageIndicatorTopPaddingLabel: "Верхний отступ индикатора страниц",
                .appTitle: "LaunchNext",
                .modifiedFrom: "Основано на LaunchNow версии 1.3.1",
                .backgroundHint: "Чтобы работать в фоне, закрепите LaunchNext в Dock или откройте окно сочетанием клавиш",
                .classicMode: "Классический Launchpad (на весь экран)",
                .iconSize: "Размер значков",
                .iconsPerRow: "Иконок в строке",
                .rowsPerPage: "Строк на страницу",
                .iconHorizontalSpacing: "Горизонтальный промежуток",
                .iconVerticalSpacing: "Вертикальный промежуток",
                .labelFontSize: "Размер шрифта подписи",
                .iconLabelFontWeight: "Толщина шрифта подписи значка",
                .folderDropZoneSize: "Размер зоны для создания папки",
                .folderDropZoneSizeHint: "Уменьшите значение, чтобы в оконном режиме реже создавать папки случайно при перетаскивании значков.",
                .folderDropZoneSizeWithDefault: "Размер зоны для создания папки (По умолчанию: %.1fx)",
                .smaller: "Меньше",
                .larger: "Больше",
                .predictDrop: "Предсказывать позицию размещения",
                .showLabels: "Показывать подписи под значками",
                .useLocalizedThirdPartyTitles: "Использовать локализованные названия",
                .enableAnimations: "Включить анимацию перелистывания",
                .hideDockOption: "Скрыть Dock",
                .hoverMagnification: "Увеличение при наведении",
                .hoverMagnificationScale: "Коэффициент увеличения",
                .activePressEffect: "Уменьшение при нажатии",
                .activePressScale: "Коэффициент нажатия",
                .animationDurationLabel: "Длительность анимации перелистывания",
                .gridSizeChangeWarning: "Изменение размера сетки может изменить расположение некоторых значков.",
                .pageIndicatorHint: "Если изменения едва заметны, настройте положение индикатора страниц ниже.",
                .rememberPageTitle: "Запоминать последнюю открытую страницу",
                .globalShortcutTitle: "Глобальное сочетание клавиш",
                .shortcutSetButton: "Назначить",
                .shortcutSaveButton: "Сохранить",
                .shortcutClearButton: "Очистить",
                .shortcutNotSet: "Не задано",
                .shortcutListening: "Ожидание…",
                .shortcutCapturePrompt: "Нажмите нужное сочетание клавиш. Esc — отмена.",
                .shortcutNoModifierWarning: "Без модификатора сочетание может конфликтовать с другими приложениями.",
                .scrollSensitivity: "Чувствительность прокрутки",
                .low: "Низкая",
                .high: "Высокая",
                .importSystem: "Импортировать системный Launchpad",
                .importLegacy: "Импортировать Legacy (.lmy)",
                .importTip: "Подсказка: нажмите «Импортировать системный Launchpad», чтобы сразу загрузить текущее расположение.",
                .exportData: "Экспортировать данные",
                .importData: "Импортировать данные",
                .refresh: "Обновить",
                .showQuickRefreshButton: "Показывать кнопку быстрого обновления",
                .resetLayout: "Сбросить раскладку",
                .resetAlertTitle: "Сбросить раскладку?",
                .resetAlertMessage: "Раскладка будет полностью сброшена: папки удалятся, порядок очистится, приложения будут просканированы заново. Все настройки будут потеряны.",
                .resetConfirm: "Сбросить",
                .cancel: "Отмена",
                .quit: "Выйти",
                .languagePickerTitle: "Язык",
                .appearanceModeTitle: "Оформление",
                .appearanceModeFollowSystem: "Как в системе",
                .appearanceModeLight: "Светлая",
                .appearanceModeDark: "Тёмная",
                .folderWindowWidth: "Ширина окна папки",
                .folderWindowHeight: "Высота окна папки",
                .folderWindowSizeHint: "Работает только в оконном режиме; классический полноэкранный режим использует фиксированный размер.",
                .versionPrefix: "v",
                .languageNameSystem: "Следовать системе",
                .languageNameEnglish: "Английский",
                .languageNameChinese: "Китайский",
                .languageNameJapanese: "Японский",
                .languageNameKorean: "Корейский",
            .languageNameFrench: "Французский",
            .languageNameSpanish: "Испанский",
            .languageNameItalian: "Итальянский",
            .languageNameCzech: "Чешский",
                .languageNameGerman: "Немецкий",
                .languageNameRussian: "Русский",
                .languageNameHindi: "Хинди",
                .languageNameVietnamese: "Вьетнамский",
                .folderNamePlaceholder: "Название папки",
                .viewOnGitHub: "Открыть ссылку проекта",
                .chooseButton: "Выбрать",
                .exportPanelMessage: "Выберите папку назначения для экспорта данных LaunchNext",
                .importPrompt: "Импортировать",
                .importPanelMessage: "Выберите папку, ранее экспортированную из LaunchNext",
                .legacyArchivePanelMessage: "Выберите архив Legacy Launchpad (.lmy/.zip) или файл db",
                .importSuccessfulTitle: "Импорт завершён",
                .importFailedTitle: "Импорт не выполнен",
                .okButton: "OK",

                // Проверка обновлений
                .checkForUpdates: "Проверить обновления",
                .checkForUpdatesButton: "Проверить обновления",
                .checkingForUpdates: "Проверка обновлений...",
                .upToDate: "У вас последняя версия",
                .updateAvailable: "Доступно обновление",
                .newVersion: "Новая версия:",
                .downloadUpdate: "Скачать обновление",
                .updateCheckFailed: "Ошибка проверки обновлений",
                .tryAgain: "Попробовать снова",
                .autoCheckForUpdates: "Автоматически проверять обновления",
                .versionParseError: "Ошибка разбора версии",
                .updatesRefreshButton: "Проверить снова",
                .openUpdaterConfig: "Открыть файл конфигурации обновлений"
            ]
        ]

        builder[.english]?.merge([
            .settingsSectionGeneral: "General",
            .settingsSectionAppSources: "App sources",
            .settingsSectionGameController: "Game controller",
            .settingsSectionAppearance: "Appearance",
            .settingsSectionHiddenApps: "Hidden apps",
            .settingsSectionSound: "Sound",
            .settingsSectionTitles: "App titles",
            .settingsSectionPerformance: "Performance",
            .settingsSectionDevelopment: "Development",
            .settingsSectionAI: "AI",
            .settingsSectionUpdates: "Updates",
            .settingsSectionAbout: "About",
            .developmentPlaceholderTitle: "Development playground",
            .developmentPlaceholderSubtitle: "Reserved for future tools and experimental features.",
            .aiSectionComingSoonTitle: "AI (Coming Soon)",
            .aiSectionComingSoonDescription: "We'll gather experiments for AI-assisted layouts and workflows here. Share feedback to steer our roadmap.",
            .aiSectionContextVision: "Advances in AI come from understanding context and collaborating through seamless interfaces.",
            .gameControllerPlaceholderTitle: "Controller support",
            .gameControllerPlaceholderSubtitle: "Connect a controller and use the D-pad to move between apps. More options are coming soon.",
            .gameControllerToggleTitle: "Enable controller navigation",
            .gameControllerStatusDisabled: "Controller navigation is turned off.",
            .gameControllerStatusNoController: "No controllers detected yet.",
            .gameControllerStatusConnectedFormat: "Connected controllers: %@",
            .gameControllerQuickGuideTitle: "Quick guide",
            .gameControllerQuickGuideDirection: "Use the D-pad or left stick to move between icons.",
            .gameControllerQuickGuideSelect: "Button A confirms the selection.",
            .gameControllerQuickGuideCancel: "Button B (or Menu) closes Launchpad.",
            .soundToggleTitle: "Enable sound effects",
            .soundToggleDescription: "Use macOS system sounds for LaunchNext actions.",
            .soundEventLaunchpadOpen: "Launchpad opens",
            .soundEventLaunchpadClose: "Launchpad closes",
            .soundEventNavigation: "Move focus",
            .soundPreviewButton: "Preview",
            .soundOptionNone: "None",
            .voiceToggleTitle: "Enable Voice Over",
            .voiceToggleDescription: "Announce the focused app name when using keyboard or controller navigation.",
            .voiceNoteMutualExclusive: "Voice Over replaces the navigation sound effect.",
            .voiceAnnouncementAppFormat: "%@",
            .voiceAnnouncementFolderFormat: "Folder: %@",
            .backgroundStyleTitle: "Background style",
            .backgroundStyleOptionBlur: "Blur",
            .backgroundStyleOptionGlass: "Liquid glass",
            .hiddenAppsAddButton: "Hide application",
            .hiddenAppsEmptyTitle: "No hidden apps yet",
            .hiddenAppsEmptySubtitle: "Select an application to hide it from LaunchNext.",
            .hiddenAppsHint: "Hidden apps disappear from the grid. Remove them here to restore.",
            .hiddenAppsRemoveButton: "Unhide",
            .hiddenAppsSearchPlaceholder: "Filter hidden apps",
            .accessibilityPlaceholderTitle: "Accessibility controls",
            .accessibilityPlaceholderSubtitle: "Accessibility settings are planned; nothing here yet.",
            .performancePlaceholderTitle: "Performance dashboard",
            .performancePlaceholderSubtitle: "Monitoring metrics will appear here soon."
        ]) { _, new in new }

        builder[.simplifiedChinese]?.merge([
            .settingsSectionGeneral: "通用",
            .settingsSectionAppSources: "应用来源",
            .settingsSectionGameController: "游戏手柄",
            .settingsSectionAppearance: "外观与行为",
            .settingsSectionHiddenApps: "隐藏应用",
            .settingsSectionSound: "声音",
            .settingsSectionTitles: "应用名称",
            .settingsSectionPerformance: "性能",
            .settingsSectionDevelopment: "开发",
            .settingsSectionAI: "AI",
            .settingsSectionUpdates: "更新",
            .settingsSectionAbout: "关于",
            .developmentPlaceholderTitle: "开发功能预留",
            .developmentPlaceholderSubtitle: "未来将用于调试工具或实验功能。",
            .aiSectionComingSoonTitle: "AI（即将上线）",
            .aiSectionComingSoonDescription: "这里会集中展示 AI 辅助布局和流程的实验功能，也欢迎随时反馈想法。",
            .aiSectionContextVision: "人工智能的进步来自于理解上下文，并通过无缝的界面协同。",
            .gameControllerPlaceholderTitle: "手柄支持",
            .gameControllerPlaceholderSubtitle: "连接手柄即可像方向键一样浏览应用，后续将提供更多可配置项。",
            .gameControllerToggleTitle: "启用手柄导航",
            .gameControllerStatusDisabled: "手柄导航已关闭。",
            .gameControllerStatusNoController: "暂未检测到任何手柄。",
            .gameControllerStatusConnectedFormat: "已连接手柄：%@",
            .gameControllerQuickGuideTitle: "基础操作",
            .gameControllerQuickGuideDirection: "方向键或左摇杆用于移动焦点。",
            .gameControllerQuickGuideSelect: "A 键确认选择。",
            .gameControllerQuickGuideCancel: "B 键（或菜单键）关闭 Launchpad。",
            .soundToggleTitle: "启用提示音效",
            .soundToggleDescription: "为 LaunchNext 的操作播放 macOS 系统提示音。",
            .soundEventLaunchpadOpen: "打开 Launchpad",
            .soundEventLaunchpadClose: "关闭 Launchpad",
            .soundEventNavigation: "移动焦点",
            .soundPreviewButton: "试听",
            .soundOptionNone: "无",
            .voiceToggleTitle: "启用 Voice Over",
            .voiceToggleDescription: "使用键盘或手柄导航时由 Voice Over 朗读当前应用名称。",
            .voiceNoteMutualExclusive: "启用 Voice Over 后将以语音取代导航音效。",
            .voiceAnnouncementAppFormat: "%@",
            .voiceAnnouncementFolderFormat: "文件夹：%@",
            .backgroundStyleTitle: "背景样式",
            .backgroundStyleOptionBlur: "高斯模糊",
            .backgroundStyleOptionGlass: "液态玻璃",
            .hiddenAppsAddButton: "隐藏应用",
            .hiddenAppsEmptyTitle: "尚未隐藏任何应用",
            .hiddenAppsEmptySubtitle: "选择一个应用即可将其从 LaunchNext 网格中隐藏。",
            .hiddenAppsHint: "被隐藏的应用不会显示在网格中，可在此处取消隐藏。",
            .hiddenAppsRemoveButton: "取消隐藏",
            .hiddenAppsSearchPlaceholder: "搜索隐藏的应用",
            .accessibilityPlaceholderTitle: "可访问性设置",
            .accessibilityPlaceholderSubtitle: "我们还在设计相关选项，敬请期待。",
            .performancePlaceholderTitle: "性能面板",
            .performancePlaceholderSubtitle: "性能指标将很快展示在此。"
        ]) { _, new in new }

        builder[.japanese]?.merge([
            .launchAtLoginTitle: "ログイン時にサイレント起動",
            .launchAtLoginDescription: "macOS にログインした直後、ウィンドウを表示せずに LaunchNext をバックグラウンドで起動します。",
            .lockLayoutTitle: "レイアウトをロック",
            .lockLayoutDescription: "この設定がオンの間はアプリやフォルダを並べ替えできません。",
            .settingsSectionGeneral: "一般",
            .settingsSectionAppSources: "スキャン対象",
            .settingsSectionGameController: "ゲームコントローラー",
            .settingsSectionAppearance: "外観と動作",
            .settingsSectionHiddenApps: "非表示のアプリ",
            .settingsSectionSound: "サウンド",
            .settingsSectionTitles: "アプリ名",
            .settingsSectionPerformance: "パフォーマンス",
            .settingsSectionDevelopment: "開発",
            .settingsSectionAI: "AI",
            .settingsSectionUpdates: "アップデート",
            .settingsSectionAbout: "情報",
            .developmentPlaceholderTitle: "開発者プレイグラウンド",
            .developmentPlaceholderSubtitle: "将来的なツールや実験機能のためのスペースです。",
            .aiSectionComingSoonTitle: "AI（近日公開）",
            .aiSectionComingSoonDescription: "AI を活用したレイアウトやワークフローの実験機能をここにまとめます。ぜひフィードバックでロードマップ作りに参加してください。",
            .aiSectionContextVision: "人工知能の進歩は、文脈を理解し、シームレスなインターフェースで協調することで生まれます。",
            .gameControllerPlaceholderTitle: "コントローラー対応",
            .gameControllerPlaceholderSubtitle: "コントローラーを接続して十字キーでアプリを移動できます。詳細設定は近日対応予定です。",
            .gameControllerToggleTitle: "コントローラー操作を有効にする",
            .gameControllerStatusDisabled: "コントローラー操作は無効になっています。",
            .gameControllerStatusNoController: "接続されているコントローラーはありません。",
            .gameControllerStatusConnectedFormat: "接続中のコントローラー：%@",
            .gameControllerQuickGuideTitle: "基本操作",
            .gameControllerQuickGuideDirection: "十字キーまたは左スティックでアイコン間を移動。",
            .gameControllerQuickGuideSelect: "A ボタンで決定。",
            .gameControllerQuickGuideCancel: "B ボタン（またはメニューボタン）で Launchpad を閉じる。",
            .soundToggleTitle: "サウンド効果を有効にする",
            .soundToggleDescription: "LaunchNext の操作に macOS のシステムサウンドを使います。",
            .soundEventLaunchpadOpen: "Launchpad を開く",
            .soundEventLaunchpadClose: "Launchpad を閉じる",
            .soundEventNavigation: "フォーカスを移動",
            .soundPreviewButton: "プレビュー",
            .soundOptionNone: "なし",
            .voiceToggleTitle: "Voice Over を有効にする",
            .voiceToggleDescription: "キーボードやコントローラー操作時に Voice Over が現在のアプリ名を読み上げます。",
            .voiceNoteMutualExclusive: "Voice Over を有効にするとナビゲーション音が代わりに読み上げへ変わります。",
            .voiceAnnouncementAppFormat: "%@",
            .voiceAnnouncementFolderFormat: "フォルダ: %@",
            .backgroundStyleTitle: "背景スタイル",
            .backgroundStyleOptionBlur: "ぼかし",
            .backgroundStyleOptionGlass: "リキッドガラス",
            .hiddenAppsAddButton: "アプリを非表示にする",
            .hiddenAppsEmptyTitle: "非表示のアプリはありません",
            .hiddenAppsEmptySubtitle: "ここでアプリを選ぶと LaunchNext から隠せます。",
            .hiddenAppsHint: "非表示にしたアプリはグリッドから消えます。再表示する場合はここで解除してください。",
            .hiddenAppsRemoveButton: "再表示",
            .hiddenAppsSearchPlaceholder: "非表示のアプリを検索",
            .accessibilityPlaceholderTitle: "アクセシビリティ設定",
            .accessibilityPlaceholderSubtitle: "アクセシビリティ項目は作業中です。しばらくお待ちください。",
            .performancePlaceholderTitle: "パフォーマンスダッシュボード",
            .performancePlaceholderSubtitle: "ここに指標が表示されます。",
            .scanSourcesIntroTitle: "LaunchNext がアプリを探す場所を管理",
            .scanSourcesIntroDescription: "外部ドライブや任意のフォルダを追加すれば、そのアプリが自動的に LaunchNext に表示されます。",
            .scanSourcesPlaceholder: "近日公開: ここでカスタムフォルダを追加・削除し、LaunchNext が常に同期できるようにします。",
            .scanSourcesDefaultListTitle: "システムフォルダ",
            .scanSourcesCustomListTitle: "カスタムフォルダ",
            .scanSourcesAddButton: "フォルダを追加…",
            .scanSourcesResetButton: "デフォルトに戻す",
            .scanSourcesEmptyHint: "まだカスタムフォルダはありません。追加してアプリを同期しましょう。",
            .scanSourcesMissingBadge: "オフライン",
            .missingAppBadge: "オフライン"
        ]) { _, new in new }

        builder[.korean]?.merge([
            .launchAtLoginTitle: "로그인 시 조용히 실행",
            .launchAtLoginDescription: "macOS 로그인 직후 창을 띄우지 않고 백그라운드에서 LaunchNext 를 시작해요.",
            .lockLayoutTitle: "레이아웃 고정",
            .lockLayoutDescription: "이 옵션을 켜면 앱과 폴더의 위치를 변경할 수 없어요.",
            .settingsSectionGeneral: "일반",
            .settingsSectionAppSources: "검색 경로",
            .settingsSectionGameController: "게임 컨트롤러",
            .settingsSectionAppearance: "개인 설정",
            .settingsSectionHiddenApps: "앱 숨기기",
            .settingsSectionSound: "사운드",
            .settingsSectionTitles: "앱 이름",
            .settingsSectionPerformance: "성능",
            .settingsSectionDevelopment: "개발",
            .settingsSectionAI: "AI",
            .settingsSectionUpdates: "업데이트",
            .settingsSectionAbout: "정보",
            .developmentPlaceholderTitle: "개발자 플레이그라운드",
            .developmentPlaceholderSubtitle: "향후 도구와 실험 기능을 위한 공간이에요.",
            .aiSectionComingSoonTitle: "AI(준비 중)",
            .aiSectionComingSoonDescription: "AI 기반 레이아웃·워크플로 실험을 모아둘 공간입니다. 원하시는 방향이 있다면 언제든 의견을 들려주세요.",
            .aiSectionContextVision: "인공지능의 발전은 문맥을 이해하고, 매끄러운 인터페이스로 협업할 때 이루어집니다.",
            .gameControllerPlaceholderTitle: "컨트롤러 지원",
            .gameControllerPlaceholderSubtitle: "컨트롤러를 연결하면 방향 패드로 앱을 이동할 수 있어요. 세부 설정은 곧 제공될 예정이에요.",
            .gameControllerToggleTitle: "게임 컨트롤러 내비게이션 사용",
            .gameControllerStatusDisabled: "게임 컨트롤러 내비게이션이 꺼져 있어요.",
            .gameControllerStatusNoController: "연결된 컨트롤러가 없어요.",
            .gameControllerStatusConnectedFormat: "연결된 컨트롤러: %@",
            .gameControllerQuickGuideTitle: "간단 사용법",
            .gameControllerQuickGuideDirection: "방향 패드나 왼쪽 스틱으로 아이콘을 이동해요.",
            .gameControllerQuickGuideSelect: "A 버튼으로 선택해요.",
            .gameControllerQuickGuideCancel: "B 버튼(또는 메뉴 버튼)으로 Launchpad를 닫어요.",
            .soundToggleTitle: "사운드 효과 사용",
            .soundToggleDescription: "LaunchNext 동작에 macOS 시스템 사운드를 사용해요.",
            .soundEventLaunchpadOpen: "Launchpad 열기",
            .soundEventLaunchpadClose: "Launchpad 닫기",
            .soundEventNavigation: "포커스 이동",
            .soundPreviewButton: "미리 듣기",
            .soundOptionNone: "없음",
            .voiceToggleTitle: "Voice Over 사용",
            .voiceToggleDescription: "키보드나 컨트롤러로 이동할 때 Voice Over가 현재 앱 이름을 읽어줘요.",
            .voiceNoteMutualExclusive: "Voice Over를 켜면 네비게이션 사운드 대신 음성 안내를 사용해요.",
            .voiceAnnouncementAppFormat: "%@",
            .voiceAnnouncementFolderFormat: "폴더: %@",
            .backgroundStyleTitle: "배경 스타일",
            .backgroundStyleOptionBlur: "블러",
            .backgroundStyleOptionGlass: "액체 유리",
            .hiddenAppsAddButton: "앱 숨기기",
            .hiddenAppsEmptyTitle: "숨겨진 앱이 없어요",
            .hiddenAppsEmptySubtitle: "이곳에서 앱을 선택하면 LaunchNext 그리드에서 숨길 수 있어요.",
            .hiddenAppsHint: "숨긴 앱은 그리드에서 사라져요. 여기에서 다시 표시할 수 있어요.",
            .hiddenAppsRemoveButton: "다시 표시",
            .hiddenAppsSearchPlaceholder: "숨긴 앱 검색",
            .accessibilityPlaceholderTitle: "손쉬운 사용 설정",
            .accessibilityPlaceholderSubtitle: "손쉬운 사용 옵션을 준비 중이에요. 잠시만 기다려 주세요.",
            .performancePlaceholderTitle: "성능 대시보드",
            .performancePlaceholderSubtitle: "곧 이곳에서 성능을 확인할 수 있어요.",
            .scanSourcesIntroTitle: "LaunchNext가 앱을 찾는 위치 관리",
            .scanSourcesIntroDescription: "외장 드라이브나 원하는 폴더를 추가하면 해당 앱이 자동으로 LaunchNext에 나타나요.",
            .scanSourcesPlaceholder: "곧 업데이트: 여기에서 사용자 지정 폴더를 추가하거나 제거해 LaunchNext가 항상 동기화되도록 해요.",
            .scanSourcesDefaultListTitle: "시스템 경로",
            .scanSourcesCustomListTitle: "사용자 경로",
            .scanSourcesAddButton: "폴더 추가…",
            .scanSourcesResetButton: "기본값으로 복원",
            .scanSourcesEmptyHint: "사용자 경로가 아직 없어요. 추가하면 더 많은 앱을 동기화할 수 있어요.",
            .scanSourcesMissingBadge: "오프라인",
            .missingAppBadge: "오프라인"
        ]) { _, new in new }

        builder[.vietnamese]?.merge([
            .launchAtLoginTitle: "Khởi chạy im lặng khi đăng nhập",
            .launchAtLoginDescription: "Sau khi đăng nhập macOS, LaunchNext chạy nền mà không mở cửa sổ.",
            .lockLayoutTitle: "Khóa bố cục",
            .lockLayoutDescription: "Khi bật sẽ ngăn không cho di chuyển biểu tượng và thư mục.",
            .settingsSectionGeneral: "Chung",
            .settingsSectionAppSources: "Đường dẫn quét",
            .settingsSectionGameController: "Tay cầm chơi game",
            .settingsSectionAppearance: "Giao diện & hành vi",
            .settingsSectionHiddenApps: "Ứng dụng ẩn",
            .settingsSectionSound: "Âm thanh",
            .settingsSectionTitles: "Tên ứng dụng",
            .settingsSectionPerformance: "Hiệu năng",
            .settingsSectionDevelopment: "Phát triển",
            .settingsSectionAI: "AI",
            .settingsSectionUpdates: "Cập nhật",
            .settingsSectionAbout: "Giới thiệu",
            .developmentPlaceholderTitle: "Khu vực dành cho nhà phát triển",
            .developmentPlaceholderSubtitle: "Không gian cho các công cụ và tính năng thử nghiệm trong tương lai.",
            .aiSectionComingSoonTitle: "AI (sắp ra mắt)",
            .aiSectionComingSoonDescription: "Chúng tôi sẽ tập hợp các thử nghiệm AI cho bố cục và quy trình tại đây. Hãy góp ý để định hướng lộ trình.",
            .aiSectionContextVision: "Tiến bộ của trí tuệ nhân tạo đến từ việc hiểu ngữ cảnh và phối hợp qua giao diện liền mạch.",
            .gameControllerPlaceholderTitle: "Hỗ trợ tay cầm",
            .gameControllerPlaceholderSubtitle: "Kết nối tay cầm và dùng phím điều hướng để di chuyển giữa ứng dụng. Tùy chỉnh sẽ sớm có mặt.",
            .gameControllerToggleTitle: "Bật điều khiển bằng tay cầm",
            .gameControllerStatusDisabled: "Điều hướng bằng tay cầm đang tắt.",
            .gameControllerStatusNoController: "Chưa phát hiện tay cầm nào.",
            .gameControllerStatusConnectedFormat: "Tay cầm đã kết nối: %@",
            .gameControllerQuickGuideTitle: "Hướng dẫn nhanh",
            .gameControllerQuickGuideDirection: "Dùng phím điều hướng hoặc stick trái để di chuyển giữa các biểu tượng.",
            .gameControllerQuickGuideSelect: "Nút A để chọn.",
            .gameControllerQuickGuideCancel: "Nút B (hoặc Menu) để đóng Launchpad.",
            .soundToggleTitle: "Bật hiệu ứng âm thanh",
            .soundToggleDescription: "Phát âm báo hệ thống macOS cho các thao tác LaunchNext.",
            .soundEventLaunchpadOpen: "Mở Launchpad",
            .soundEventLaunchpadClose: "Đóng Launchpad",
            .soundEventNavigation: "Di chuyển tiêu điểm",
            .soundPreviewButton: "Nghe thử",
            .soundOptionNone: "Không",
            .voiceToggleTitle: "Bật Voice Over",
            .voiceToggleDescription: "Voice Over sẽ đọc tên ứng dụng đang được chọn khi điều hướng bằng bàn phím hoặc tay cầm.",
            .voiceNoteMutualExclusive: "Bật Voice Over sẽ thay thế âm báo di chuyển bằng giọng đọc.",
            .voiceAnnouncementAppFormat: "%@",
            .voiceAnnouncementFolderFormat: "Thư mục: %@",
            .backgroundStyleTitle: "Kiểu nền",
            .backgroundStyleOptionBlur: "Làm mờ",
            .backgroundStyleOptionGlass: "Kính lỏng",
            .hiddenAppsAddButton: "Ẩn ứng dụng",
            .hiddenAppsEmptyTitle: "Chưa có ứng dụng nào bị ẩn",
            .hiddenAppsEmptySubtitle: "Chọn một ứng dụng để ẩn khỏi lưới LaunchNext.",
            .hiddenAppsHint: "Ứng dụng bị ẩn sẽ biến mất khỏi lưới. Huỷ ẩn tại đây để khôi phục.",
            .hiddenAppsRemoveButton: "Huỷ ẩn",
            .hiddenAppsSearchPlaceholder: "Tìm ứng dụng bị ẩn",
            .accessibilityPlaceholderTitle: "Tuỳ chọn hỗ trợ tiếp cận",
            .accessibilityPlaceholderSubtitle: "Chúng tôi vẫn đang xây dựng các tuỳ chọn hỗ trợ tiếp cận.",
            .performancePlaceholderTitle: "Bảng điều khiển hiệu năng",
            .performancePlaceholderSubtitle: "Các chỉ số sẽ sớm xuất hiện tại đây.",
            .scanSourcesIntroTitle: "Quản lý nơi LaunchNext tìm ứng dụng",
            .scanSourcesIntroDescription: "Thêm ổ đĩa ngoài hoặc thư mục tuỳ chỉnh để ứng dụng trong đó tự động có mặt trong LaunchNext.",
            .scanSourcesPlaceholder: "Sắp ra mắt: thêm hoặc xoá thư mục tuỳ chỉnh tại đây để LaunchNext luôn quét và đồng bộ hoá.",
            .scanSourcesDefaultListTitle: "Thư mục hệ thống",
            .scanSourcesCustomListTitle: "Thư mục tuỳ chỉnh",
            .scanSourcesAddButton: "Thêm thư mục…",
            .scanSourcesResetButton: "Khôi phục mặc định",
            .scanSourcesEmptyHint: "Chưa có thư mục tuỳ chỉnh. Thêm để đồng bộ thêm ứng dụng.",
            .scanSourcesMissingBadge: "Ngoại tuyến",
            .missingAppBadge: "Ngoại tuyến"
        ]) { _, new in new }

        builder[.french]?.merge([
            .launchAtLoginTitle: "Lancement silencieux à l’ouverture de session",
            .launchAtLoginDescription: "Après la connexion à macOS, LaunchNext se lance en arrière-plan sans afficher de fenêtre.",
            .lockLayoutTitle: "Verrouiller la disposition",
            .lockLayoutDescription: "Empêche de réorganiser les applications et dossiers tant que l’option est activée.",
            .settingsSectionGeneral: "Général",
            .settingsSectionAppSources: "Gestion des dossiers",
            .settingsSectionGameController: "Manette",
            .settingsSectionAppearance: "Apparence",
            .settingsSectionHiddenApps: "Applications masquées",
            .settingsSectionSound: "Son",
            .settingsSectionTitles: "Noms des applications",
            .settingsSectionPerformance: "Performances",
            .settingsSectionDevelopment: "Développement",
            .settingsSectionAI: "AI",
            .settingsSectionUpdates: "Mises à jour",
            .settingsSectionAbout: "À propos",
            .developmentPlaceholderTitle: "Espace développeur",
            .developmentPlaceholderSubtitle: "Réservé aux outils et fonctionnalités expérimentales à venir.",
            .aiSectionComingSoonTitle: "AI (bientôt disponible)",
            .aiSectionComingSoonDescription: "Nous regrouperons ici les prototypes d’aide à la mise en page et aux flux grâce à l’IA. Vos retours orienteront la feuille de route.",
            .aiSectionContextVision: "Les progrès de l’intelligence artificielle naissent de la compréhension du contexte et d’une collaboration via des interfaces fluides.",
            .gameControllerPlaceholderTitle: "Prise en charge des manettes",
            .gameControllerPlaceholderSubtitle: "Branchez une manette et utilisez la croix directionnelle pour parcourir les applications. D'autres réglages seront disponibles prochainement.",
            .gameControllerToggleTitle: "Activer la navigation à la manette",
            .gameControllerStatusDisabled: "La navigation à la manette est désactivée.",
            .gameControllerStatusNoController: "Aucune manette détectée actuellement.",
            .gameControllerStatusConnectedFormat: "Manettes connectées : %@",
            .gameControllerQuickGuideTitle: "Guide rapide",
            .gameControllerQuickGuideDirection: "Utilisez la croix ou le stick gauche pour déplacer le focus.",
            .gameControllerQuickGuideSelect: "Le bouton A valide la sélection.",
            .gameControllerQuickGuideCancel: "Le bouton B (ou Menu) ferme LaunchNext.",
            .soundToggleTitle: "Activer les effets sonores",
            .soundToggleDescription: "Utilisez les sons du système macOS pour les actions de LaunchNext.",
            .soundEventLaunchpadOpen: "Ouverture de LaunchNext",
            .soundEventLaunchpadClose: "Fermeture de LaunchNext",
            .soundEventNavigation: "Déplacement de la sélection",
            .soundPreviewButton: "Aperçu",
            .soundOptionNone: "Aucun",
            .voiceToggleTitle: "Activer VoiceOver",
            .voiceToggleDescription: "VoiceOver annonce le nom de l’application sélectionnée lors de la navigation au clavier ou à la manette.",
            .voiceNoteMutualExclusive: "VoiceOver remplace le son de navigation par une annonce vocale.",
            .voiceAnnouncementAppFormat: "%@",
            .voiceAnnouncementFolderFormat: "Dossier : %@",
            .backgroundStyleTitle: "Style de l'arrière-plan",
            .backgroundStyleOptionBlur: "Flou",
            .backgroundStyleOptionGlass: "Liquid Glass",
            .hiddenAppsAddButton: "Masquer une application",
            .hiddenAppsEmptyTitle: "Aucune application masquée",
            .hiddenAppsEmptySubtitle: "Choisissez une application pour la masquer dans LaunchNext.",
            .hiddenAppsHint: "Les applications masquées n'apparaissent plus dans la grille. Vous pouvez les rétablir ici.",
            .hiddenAppsRemoveButton: "Afficher",
            .hiddenAppsSearchPlaceholder: "Rechercher des applications masquées",
            .accessibilityPlaceholderTitle: "Paramètres d’accessibilité",
            .accessibilityPlaceholderSubtitle: "Les paramètres d’accessibilité apparaîtront ici prochainement.",
            .performancePlaceholderTitle: "Tableau de bord des performances",
            .performancePlaceholderSubtitle: "Les indicateurs apparaîtront ici prochainement.",
            .scanSourcesIntroTitle: "Gérer les emplacements analysés par LaunchNext",
            .scanSourcesIntroDescription: "Ajoutez des disques externes ou des dossiers personnalisés pour que leurs applications apparaissent automatiquement dans LaunchNext.",
            .scanSourcesPlaceholder: "Bientôt disponible : vous pourrez sélectionner ici des dossiers personnalisés que LaunchNext analysera et maintiendra à jour.",
            .scanSourcesDefaultListTitle: "Dossiers système",
            .scanSourcesCustomListTitle: "Dossiers personnalisés",
            .scanSourcesAddButton: "Ajouter des dossiers…",
            .scanSourcesResetButton: "Restaurer par défaut",
            .scanSourcesEmptyHint: "Ajoutez des dossiers pour synchroniser des applications supplémentaires.",
            .scanSourcesMissingBadge: "Indisponible",
            .missingAppBadge: "Indisponible"
        ]) { _, new in new }

        builder[.spanish]?.merge([
            .launchAtLoginTitle: "Inicio silencioso al iniciar sesión",
            .launchAtLoginDescription: "Tras iniciar sesión en macOS, LaunchNext se abre en segundo plano sin mostrar la ventana.",
            .lockLayoutTitle: "Bloquear la disposición",
            .lockLayoutDescription: "Impide reorganizar apps y carpetas mientras esté activado.",
            .settingsSectionGeneral: "General",
            .settingsSectionAppSources: "Rutas de escaneo",
            .settingsSectionGameController: "Mando",
            .settingsSectionAppearance: "Apariencia y comportamiento",
            .settingsSectionHiddenApps: "Apps ocultas",
            .settingsSectionSound: "Sonido",
            .settingsSectionTitles: "Nombres de apps",
            .settingsSectionPerformance: "Rendimiento",
            .settingsSectionDevelopment: "Desarrollo",
            .settingsSectionAI: "AI",
            .settingsSectionUpdates: "Actualizaciones",
            .settingsSectionAbout: "Acerca de",
            .developmentPlaceholderTitle: "Zona de desarrollo",
            .developmentPlaceholderSubtitle: "Reservado para futuras herramientas y funciones experimentales.",
            .aiSectionComingSoonTitle: "AI (próximamente)",
            .aiSectionComingSoonDescription: "Aquí reuniremos experimentos de IA para mejorar diseños y flujos. Tus comentarios nos ayudan a definir la hoja de ruta.",
            .aiSectionContextVision: "El avance de la inteligencia artificial surge de comprender el contexto y colaborar mediante interfaces sin fricciones.",
            .gameControllerPlaceholderTitle: "Compatibilidad con mandos",
            .gameControllerPlaceholderSubtitle: "Conecta un mando y usa la cruceta para moverte entre apps. Las opciones de configuración llegarán pronto.",
            .gameControllerToggleTitle: "Activar navegación con mando",
            .gameControllerStatusDisabled: "La navegación con mando está desactivada.",
            .gameControllerStatusNoController: "Todavía no se detectan mandos.",
            .gameControllerStatusConnectedFormat: "Mandos conectados: %@",
            .gameControllerQuickGuideTitle: "Guía rápida",
            .gameControllerQuickGuideDirection: "Usa la cruceta o el stick izquierdo para moverte entre iconos.",
            .gameControllerQuickGuideSelect: "El botón A confirma la selección.",
            .gameControllerQuickGuideCancel: "El botón B (o Menú) cierra Launchpad.",
            .soundToggleTitle: "Activar efectos de sonido",
            .soundToggleDescription: "Usa los sonidos del sistema macOS para las acciones de LaunchNext.",
            .soundEventLaunchpadOpen: "Abrir Launchpad",
            .soundEventLaunchpadClose: "Cerrar Launchpad",
            .soundEventNavigation: "Mover foco",
            .soundPreviewButton: "Reproducir",
            .soundOptionNone: "Ninguno",
            .voiceToggleTitle: "Activar Voice Over",
            .voiceToggleDescription: "Voice Over anuncia el nombre de la app enfocada al navegar con teclado o mando.",
            .voiceNoteMutualExclusive: "Al activar Voice Over, el sonido de navegación se sustituye por la locución.",
            .voiceAnnouncementAppFormat: "%@",
            .voiceAnnouncementFolderFormat: "Carpeta: %@",
            .backgroundStyleTitle: "Estilo de fondo",
            .backgroundStyleOptionBlur: "Desenfoque",
            .backgroundStyleOptionGlass: "Vidrio líquido",
            .hiddenAppsAddButton: "Ocultar app",
            .hiddenAppsEmptyTitle: "Todavía no hay apps ocultas",
            .hiddenAppsEmptySubtitle: "Elige una aplicación para ocultarla en LaunchNext.",
            .hiddenAppsHint: "Las apps ocultas desaparecen de la cuadrícula. Restáuralas desde aquí.",
            .hiddenAppsRemoveButton: "Mostrar",
            .hiddenAppsSearchPlaceholder: "Buscar apps ocultas",
            .accessibilityPlaceholderTitle: "Opciones de accesibilidad",
            .accessibilityPlaceholderSubtitle: "Las configuraciones de accesibilidad aún no están listas.",
            .performancePlaceholderTitle: "Panel de rendimiento",
            .performancePlaceholderSubtitle: "Muy pronto podrás ver métricas aquí.",
            .scanSourcesIntroTitle: "Gestiona dónde busca aplicaciones LaunchNext",
            .scanSourcesIntroDescription: "Añade unidades externas o carpetas personalizadas para que sus aplicaciones aparezcan automáticamente en LaunchNext.",
            .scanSourcesPlaceholder: "Muy pronto: podrás añadir o quitar carpetas personalizadas y LaunchNext las mantendrá sincronizadas.",
            .scanSourcesDefaultListTitle: "Directorios del sistema",
            .scanSourcesCustomListTitle: "Directorios personalizados",
            .scanSourcesAddButton: "Añadir carpetas…",
            .scanSourcesResetButton: "Restablecer predeterminados",
            .scanSourcesEmptyHint: "Todavía no hay directorios personalizados. Añade uno para sincronizar más apps.",
            .scanSourcesMissingBadge: "Sin conexión",
            .missingAppBadge: "Sin conexión"
        ]) { _, new in new }

        builder[.italian]?.merge([
            .settingsSectionGeneral: "Generali",
            .settingsSectionAppSources: "Origine scansione",
            .settingsSectionGameController: "Controller per videogiochi",
            .settingsSectionAppearance: "Aspetto",
            .settingsSectionHiddenApps: "App nascoste",
            .settingsSectionSound: "Audio",
            .settingsSectionTitles: "Nomi app",
            .settingsSectionPerformance: "Prestazioni",
            .settingsSectionDevelopment: "Sviluppo",
            .settingsSectionAI: "AI",
            .settingsSectionUpdates: "Aggiornamenti",
            .settingsSectionAbout: "Informazioni",
            .developmentPlaceholderTitle: "Area di sviluppo",
            .developmentPlaceholderSubtitle: "Riservato a futuri strumenti e funzionalità sperimentali.",
            .aiSectionComingSoonTitle: "AI (in arrivo)",
            .aiSectionComingSoonDescription: "Raccoglieremo qui gli esperimenti di AI per layout e flussi assistiti. Inviaci feedback per guidare la roadmap.",
            .aiSectionContextVision: "I progressi dell’intelligenza artificiale nascono comprendendo il contesto e collaborando tramite interfacce senza attriti.",
            .gameControllerPlaceholderTitle: "Supporto controller",
            .gameControllerPlaceholderSubtitle: "Collega un controller e usa la croce direzionale per muoverti tra le app. Altre opzioni arriveranno presto.",
            .gameControllerToggleTitle: "Abilita navigazione con controller",
            .gameControllerStatusDisabled: "La navigazione con controller è disattivata.",
            .gameControllerStatusNoController: "Nessun controller rilevato.",
            .gameControllerStatusConnectedFormat: "Controller collegati: %@",
            .gameControllerQuickGuideTitle: "Guida rapida",
            .gameControllerQuickGuideDirection: "Usa la croce direzionale o lo stick sinistro per muoverti tra le icone.",
            .gameControllerQuickGuideSelect: "Il pulsante A conferma la selezione.",
            .gameControllerQuickGuideCancel: "Il pulsante B (o Menu) chiude Launchpad.",
            .soundToggleTitle: "Attiva effetti sonori",
            .soundToggleDescription: "Usa i suoni di sistema di macOS per le azioni di LaunchNext.",
            .soundEventLaunchpadOpen: "Apri Launchpad",
            .soundEventLaunchpadClose: "Chiudi Launchpad",
            .soundEventNavigation: "Sposta focus",
            .soundPreviewButton: "Anteprima",
            .soundOptionNone: "Nessuno",
            .voiceToggleTitle: "Abilita Voice Over",
            .voiceToggleDescription: "Voice Over annuncia il nome dell’app selezionata durante la navigazione con tastiera o controller.",
            .voiceNoteMutualExclusive: "Attivando Voice Over il suono di navigazione viene sostituito dalla voce.",
            .voiceAnnouncementAppFormat: "%@",
            .voiceAnnouncementFolderFormat: "Cartella: %@",
            .backgroundStyleTitle: "Stile di sfondo",
            .backgroundStyleOptionBlur: "Sfocatura",
            .backgroundStyleOptionGlass: "Vetro",
            .hiddenAppsAddButton: "Nascondi app",
            .hiddenAppsEmptyTitle: "Nessuna app nascosta",
            .hiddenAppsEmptySubtitle: "Scegli un’app per nasconderla dalla griglia di LaunchNext.",
            .hiddenAppsHint: "Le app nascoste scompaiono dalla griglia. Ripristinale qui.",
            .hiddenAppsRemoveButton: "Mostra",
            .hiddenAppsSearchPlaceholder: "Cerca app nascoste",
            .accessibilityPlaceholderTitle: "Accessibilità",
            .accessibilityPlaceholderSubtitle: "Le opzioni di accessibilità arriveranno a breve.",
            .performancePlaceholderTitle: "Pannello prestazioni",
            .performancePlaceholderSubtitle: "Le metriche appariranno qui a breve.",
        ]) { _, new in new }

        builder[.czech]?.merge([
            .launchAtLoginTitle: "Tichý start po přihlášení",
            .launchAtLoginDescription: "Po přihlášení do macOS se LaunchNext spustí na pozadí bez zobrazení okna.",
            .lockLayoutTitle: "Uzamknout rozložení",
            .lockLayoutDescription: "Při zapnutí zabrání přesouvání aplikací a složek.",
            .settingsSectionGeneral: "Obecné",
            .settingsSectionAppSources: "Sledované cesty",
            .settingsSectionGameController: "Herní ovladač",
            .settingsSectionAppearance: "Vzhled",
            .settingsSectionHiddenApps: "Skryté aplikace",
            .settingsSectionSound: "Zvuk",
            .settingsSectionTitles: "Názvy aplikací",
            .settingsSectionPerformance: "Výkon",
            .settingsSectionDevelopment: "Vývoj",
            .settingsSectionAI: "AI",
            .settingsSectionUpdates: "Aktualizace",
            .settingsSectionAbout: "O aplikaci",
            .developmentPlaceholderTitle: "Vývojářské hřiště",
            .developmentPlaceholderSubtitle: "Vyhrazeno pro budoucí nástroje a experimentální funkce.",
            .aiSectionComingSoonTitle: "AI (již brzy)",
            .aiSectionComingSoonDescription: "Na toto místo soustředíme experimenty s AI pro layout a pracovní postupy. Dejte nám vědět, co byste chtěli vidět.",
            .aiSectionContextVision: "Pokrok v umělé inteligenci vychází z pochopení kontextu a spolupráce prostřednictvím bezproblémových rozhraní.",
            .gameControllerPlaceholderTitle: "Podpora ovladače",
            .gameControllerPlaceholderSubtitle: "Připoj ovladač a používej směrový kříž pro pohyb mezi aplikacemi. Další možnosti brzy přibudou.",
            .gameControllerToggleTitle: "Povolit navigaci ovladačem",
            .gameControllerStatusDisabled: "Navigace ovladačem je vypnutá.",
            .gameControllerStatusNoController: "Zatím nebyl rozpoznán žádný ovladač.",
            .gameControllerStatusConnectedFormat: "Připojené ovladače: %@",
            .gameControllerQuickGuideTitle: "Rychlý průvodce",
            .gameControllerQuickGuideDirection: "Použij směrový kříž nebo levou páčku k pohybu mezi ikonami.",
            .gameControllerQuickGuideSelect: "Tlačítko A potvrdí výběr.",
            .gameControllerQuickGuideCancel: "Tlačítko B (nebo Menu) zavře Launchpad.",
            .soundToggleTitle: "Povolit zvukové efekty",
            .soundToggleDescription: "Používej systémové zvuky macOS pro akce LaunchNext.",
            .soundEventLaunchpadOpen: "Launchpad se otevírá",
            .soundEventLaunchpadClose: "Launchpad se zavírá",
            .soundEventNavigation: "Přesunout fokus",
            .soundPreviewButton: "Náhled",
            .soundOptionNone: "Žádný",
            .voiceToggleTitle: "Povolit Voice Over",
            .voiceToggleDescription: "Při navigaci klávesnicí nebo ovladačem bude čten název aktuální aplikace.",
            .voiceNoteMutualExclusive: "Voice Over nahrazuje navigační zvuk hlasovým výstupem.",
            .voiceAnnouncementAppFormat: "%@",
            .voiceAnnouncementFolderFormat: "Složka: %@",
            .backgroundStyleTitle: "Styl pozadí",
            .backgroundStyleOptionBlur: "Rozostření",
            .backgroundStyleOptionGlass: "Tekuté sklo",
            .hiddenAppsAddButton: "Skrýt aplikaci",
            .hiddenAppsEmptyTitle: "Zatím žádné skryté aplikace",
            .hiddenAppsEmptySubtitle: "Vyber aplikaci, kterou chceš skrýt v LaunchNext.",
            .hiddenAppsHint: "Skryté aplikace zmizí z mřížky. Tady je můžeš znovu zobrazit.",
            .hiddenAppsRemoveButton: "Zviditelnit",
            .hiddenAppsSearchPlaceholder: "Filtrovat skryté aplikace",
            .accessibilityPlaceholderTitle: "Zpřístupnění",
            .accessibilityPlaceholderSubtitle: "Nastavení zpřístupnění se připravuje; zatím zde nic není.",
            .performancePlaceholderTitle: "Výkonový přehled",
            .performancePlaceholderSubtitle: "Metriky budou brzy k dispozici.",
            .scanSourcesIntroTitle: "Spravujte místa, kde LaunchNext hledá aplikace",
            .scanSourcesIntroDescription: "Přidejte externí disky či vlastní složky a jejich aplikace se v LaunchNext objeví automaticky.",
            .scanSourcesPlaceholder: "Již brzy: zde půjde přidávat nebo odebírat vlastní složky a LaunchNext je udrží synchronizované.",
            .scanSourcesDefaultListTitle: "Systémové cesty",
            .scanSourcesCustomListTitle: "Vlastní cesty",
            .scanSourcesAddButton: "Přidat složky…",
            .scanSourcesResetButton: "Obnovit výchozí",
            .scanSourcesEmptyHint: "Zatím žádné vlastní cesty. Přidejte je pro synchronizaci dalších aplikací.",
            .scanSourcesMissingBadge: "Offline",
            .missingAppBadge: "Offline"
        ]) { _, new in new }
        
        builder[.german]?.merge([
            .launchAtLoginTitle: "Stiller Start nach Login",
            .launchAtLoginDescription: "Nach dem Anmelden bei macOS startet LaunchNext im Hintergrund ohne Fenster.",
            .lockLayoutTitle: "Layout sperren",
            .lockLayoutDescription: "Verhindert das Verschieben von Apps und Ordnern, solange aktiviert.",
            .settingsSectionGeneral: "Allgemein",
            .settingsSectionAppSources: "Scan-Quellen",
            .settingsSectionGameController: "Gamecontroller",
            .settingsSectionAppearance: "Darstellung & Verhalten",
            .settingsSectionHiddenApps: "Ausgeblendete Apps",
            .settingsSectionSound: "Sound",
            .settingsSectionTitles: "App-Namen",
            .settingsSectionPerformance: "Performance",
            .settingsSectionDevelopment: "Entwicklung",
            .settingsSectionAI: "AI",
            .settingsSectionUpdates: "Updates",
            .settingsSectionAbout: "Info",
            .developmentPlaceholderTitle: "Entwicklerbereich",
            .developmentPlaceholderSubtitle: "Reserviert für zukünftige Tools und experimentelle Features.",
            .aiSectionComingSoonTitle: "AI (kommt bald)",
            .aiSectionComingSoonDescription: "Hier bündeln wir Experimente für KI-gestützte Layouts und Workflows. Euer Feedback bestimmt die Roadmap.",
            .aiSectionContextVision: "Fortschritte bei künstlicher Intelligenz entstehen, wenn wir Kontext verstehen und über nahtlose Schnittstellen zusammenarbeiten.",
            .gameControllerPlaceholderTitle: "Controller-Unterstützung",
            .gameControllerPlaceholderSubtitle: "Schließe einen Controller an und navigiere mit dem Steuerkreuz zwischen Apps. Weitere Optionen folgen bald.",
            .gameControllerToggleTitle: "Gamecontroller-Navigation aktivieren",
            .gameControllerStatusDisabled: "Die Gamecontroller-Navigation ist deaktiviert.",
            .gameControllerStatusNoController: "Es wurden noch keine Controller erkannt.",
            .gameControllerStatusConnectedFormat: "Verbundene Controller: %@",
            .gameControllerQuickGuideTitle: "Kurzanleitung",
            .gameControllerQuickGuideDirection: "Mit Steuerkreuz oder linkem Stick zwischen den Icons navigieren.",
            .gameControllerQuickGuideSelect: "Mit der A-Taste bestätigen.",
            .gameControllerQuickGuideCancel: "Mit der B-Taste (oder Menü) Launchpad schließen.",
            .soundToggleTitle: "Soundeffekte aktivieren",
            .soundToggleDescription: "Verwende macOS-Systemtöne für LaunchNext-Aktionen.",
            .soundEventLaunchpadOpen: "Launchpad öffnen",
            .soundEventLaunchpadClose: "Launchpad schließen",
            .soundEventNavigation: "Fokus verschieben",
            .soundPreviewButton: "Vorschau",
            .soundOptionNone: "Keiner",
            .voiceToggleTitle: "Voice Over aktivieren",
            .voiceToggleDescription: "Voice Over liest bei Tastatur- oder Controller-Navigation den aktuellen App-Namen vor.",
            .voiceNoteMutualExclusive: "Voice Over ersetzt den Navigationssound durch eine Sprachausgabe.",
            .voiceAnnouncementAppFormat: "%@",
            .voiceAnnouncementFolderFormat: "Ordner: %@",
            .backgroundStyleTitle: "Hintergrundstil",
            .backgroundStyleOptionBlur: "Unschärfe",
            .backgroundStyleOptionGlass: "Liquid Glass",
            .hiddenAppsAddButton: "App ausblenden",
            .hiddenAppsEmptyTitle: "Noch keine Apps ausgeblendet",
            .hiddenAppsEmptySubtitle: "Wähle eine App, um sie in LaunchNext auszublenden.",
            .hiddenAppsHint: "Ausgeblendete Apps verschwinden aus dem Raster. Hier kannst du sie wieder einblenden.",
            .hiddenAppsRemoveButton: "Einblenden",
            .hiddenAppsSearchPlaceholder: "Ausgeblendete Apps suchen",
            .accessibilityPlaceholderTitle: "Barrierefreiheit",
            .accessibilityPlaceholderSubtitle: "Die Einstellungen zur Barrierefreiheit folgen noch.",
            .performancePlaceholderTitle: "Performance-Dashboard",
            .performancePlaceholderSubtitle: "Kennzahlen folgen in Kürze.",
            .scanSourcesIntroTitle: "Verwalte, wo LaunchNext nach Apps sucht",
            .scanSourcesIntroDescription: "Füge externe Laufwerke oder eigene Ordner hinzu, damit deren Apps automatisch in LaunchNext erscheinen.",
            .scanSourcesPlaceholder: "Bald verfügbar: Hier kannst du eigene Ordner hinzufügen oder entfernen und LaunchNext bleibt synchron.",
            .scanSourcesDefaultListTitle: "Systempfade",
            .scanSourcesCustomListTitle: "Eigene Pfade",
            .scanSourcesAddButton: "Ordner hinzufügen…",
            .scanSourcesResetButton: "Standard wiederherstellen",
            .scanSourcesEmptyHint: "Noch keine eigenen Pfade. Füge welche hinzu, um weitere Apps zu synchronisieren.",
            .scanSourcesMissingBadge: "Offline",
            .missingAppBadge: "Offline"
        ]) { _, new in new }

        builder[.russian]?.merge([
            .launchAtLoginTitle: "Тихий запуск при входе",
            .launchAtLoginDescription: "После входа в macOS LaunchNext запускается в фоновом режиме без окна.",
            .lockLayoutTitle: "Зафиксировать раскладку",
            .lockLayoutDescription: "Не позволяет перемещать приложения и папки, пока включено.",
            .settingsSectionGeneral: "Общие",
            .settingsSectionAppSources: "Пути сканирования",
            .settingsSectionGameController: "Геймпад",
            .settingsSectionAppearance: "Внешний вид и поведение",
            .settingsSectionHiddenApps: "Скрытые приложения",
            .settingsSectionSound: "Звук",
            .settingsSectionTitles: "Названия приложений",
            .settingsSectionPerformance: "Производительность",
            .settingsSectionDevelopment: "Разработка",
            .settingsSectionAI: "AI",
            .settingsSectionUpdates: "Обновления",
            .settingsSectionAbout: "О приложении",
            .developmentPlaceholderTitle: "Площадка для разработчиков",
            .developmentPlaceholderSubtitle: "Здесь появятся инструменты и экспериментальные возможности.",
            .aiSectionComingSoonTitle: "AI (скоро)",
            .aiSectionComingSoonDescription: "Здесь мы соберём эксперименты с ИИ для раскладок и рабочих процессов. Делитесь идеями, чтобы повлиять на дорожную карту.",
            .aiSectionContextVision: "Прорывы в искусственном интеллекте рождаются из понимания контекста и совместной работы через бесшовные интерфейсы.",
            .gameControllerPlaceholderTitle: "Поддержка контроллера",
            .gameControllerPlaceholderSubtitle: "Подключите геймпад и перемещайтесь по приложениям с помощью крестовины. Дополнительные настройки появятся позже.",
            .gameControllerToggleTitle: "Включить навигацию геймпадом",
            .gameControllerStatusDisabled: "Навигация геймпадом выключена.",
            .gameControllerStatusNoController: "Геймпады пока не обнаружены.",
            .gameControllerStatusConnectedFormat: "Подключённые геймпады: %@",
            .gameControllerQuickGuideTitle: "Краткая инструкция",
            .gameControllerQuickGuideDirection: "Перемещайтесь между иконками крестовиной или левым стиком.",
            .gameControllerQuickGuideSelect: "Кнопка A запускает выбранное приложение.",
            .gameControllerQuickGuideCancel: "Кнопка B (или Menu) закрывает Launchpad.",
            .soundToggleTitle: "Включить звуковые эффекты",
            .soundToggleDescription: "Использовать системные звуки macOS для действий LaunchNext.",
            .soundEventLaunchpadOpen: "Открытие Launchpad",
            .soundEventLaunchpadClose: "Закрытие Launchpad",
            .soundEventNavigation: "Перемещение фокуса",
            .soundPreviewButton: "Прослушать",
            .soundOptionNone: "Нет",
            .voiceToggleTitle: "Включить Voice Over",
            .voiceToggleDescription: "Voice Over будет произносить название приложения при навигации клавиатурой или геймпадом.",
            .voiceNoteMutualExclusive: "При включённом Voice Over звук навигации заменяется голосовым объявлением.",
            .voiceAnnouncementAppFormat: "%@",
            .voiceAnnouncementFolderFormat: "Папка: %@",
            .backgroundStyleTitle: "Стиль фона",
            .backgroundStyleOptionBlur: "Размытие",
            .backgroundStyleOptionGlass: "Жидкое стекло",
            .hiddenAppsAddButton: "Скрыть приложение",
            .hiddenAppsEmptyTitle: "Скрытых приложений нет",
            .hiddenAppsEmptySubtitle: "Выберите приложение, чтобы скрыть его из LaunchNext.",
            .hiddenAppsHint: "Скрытые приложения не отображаются в сетке. Здесь можно вернуть их обратно.",
            .hiddenAppsRemoveButton: "Показать",
            .hiddenAppsSearchPlaceholder: "Поиск среди скрытых приложений",
            .accessibilityPlaceholderTitle: "Параметры доступности",
            .accessibilityPlaceholderSubtitle: "Настройки доступности ещё в разработке.",
            .performancePlaceholderTitle: "Панель производительности",
            .performancePlaceholderSubtitle: "Скоро здесь появятся показатели эффективности.",
            .scanSourcesIntroTitle: "Управляйте местами, где LaunchNext ищет приложения",
            .scanSourcesIntroDescription: "Добавьте внешние диски или произвольные папки, и их приложения будут автоматически отображаться в LaunchNext.",
            .scanSourcesPlaceholder: "Скоро: здесь можно будет добавлять и удалять собственные каталоги, а LaunchNext будет держать их в актуальном состоянии.",
            .scanSourcesDefaultListTitle: "Системные каталоги",
            .scanSourcesCustomListTitle: "Пользовательские каталоги",
            .scanSourcesAddButton: "Добавить папки…",
            .scanSourcesResetButton: "Восстановить по умолчанию",
            .scanSourcesEmptyHint: "Пользовательских каталогов пока нет. Добавьте их, чтобы синхронизировать больше приложений.",
            .scanSourcesMissingBadge: "Офлайн",
            .missingAppBadge: "Офлайн"
        ]) { _, new in new }

        var hindiDictionary = builder[.english] ?? [:]
        hindiDictionary[.languagePickerTitle] = "भाषा"
        hindiDictionary[.languageNameSystem] = "सिस्टम का अनुसरण करें"
        hindiDictionary[.languageNameEnglish] = "English"
        hindiDictionary[.languageNameChinese] = "中文"
        hindiDictionary[.languageNameJapanese] = "日本語"
        hindiDictionary[.languageNameKorean] = "한국어"
        hindiDictionary[.languageNameFrench] = "Français"
        hindiDictionary[.languageNameSpanish] = "Español"
        hindiDictionary[.languageNameItalian] = "इतालवी"
        hindiDictionary[.languageNameCzech] = "Czech"
        hindiDictionary[.languageNameGerman] = "Deutsch"
        hindiDictionary[.languageNameRussian] = "Русский"
        hindiDictionary[.languageNameHindi] = "हिन्दी"
        hindiDictionary[.languageNameVietnamese] = "वियतनामी"

        hindiDictionary.merge([
            .launchAtLoginTitle: "लॉगिन पर साइलेंट लॉन्च",
            .launchAtLoginDescription: "macOS में साइन इन करने के बाद LaunchNext विंडो दिखाए बिना बैकग्राउंड में चलता है।",
            .lockLayoutTitle: "लेआउट लॉक करें",
            .lockLayoutDescription: "इस विकल्प के चालू रहने पर ऐप और फ़ोल्डर को पुनः व्यवस्थित नहीं किया जा सकता।",
            .noAppsFound: "कोई ऐप नहीं मिला",
            .searchPlaceholder: "खोजें",
            .renameSearchPlaceholder: "ऐप खोजें",
            .customTitlePlaceholder: "कस्टम नाम दर्ज करें",
            .customTitleHint: "यहाँ ऐप का नाम बदलें; कस्टम नाम आयात या भाषा बदलने पर भी बने रहेंगे।",
            .customTitleDefaultFormat: "डिफ़ॉल्ट: %@",
            .customTitleReset: "डिफ़ॉल्ट बहाल करें",
            .customTitleAddButton: "ऐप जोड़ें",
            .customTitleEmptyTitle: "अभी कोई कस्टम नाम नहीं",
            .customTitleEmptySubtitle: "ऐप चुनें और नया नाम दें; आयात या भाषा बदलने पर भी ये सुरक्षित रहेंगे।",
            .customTitleNoResults: "कोई मेल नहीं मिला",
            .customTitlePickerMessage: "जिस ऐप का नाम बदलना चाहते हैं उसे चुनें।",
            .customTitleEdit: "संपादित करें",
            .customTitleSave: "सहेजें",
            .customTitleCancel: "रद्द करें",
            .customTitleDelete: "हटाएँ",
            .loadingApplications: "ऐप लोड हो रहे हैं…",
            .showFPSOverlay: "FPS दिखाएँ",
            .showFPSOverlayDisclaimer: "अनुमानित मान; वास्तविक फ्रेम दर से भिन्न हो सकता है।",
            .customIconTitle: "ऐप आइकन",
            .customIconChoose: "चुनें…",
            .customIconReset: "डिफ़ॉल्ट आइकन बहाल करें",
            .customIconHint: "512×512 PNG/ICNS फ़ाइल सर्वोत्तम है। बदलाव तुरंत लागू होंगे।",
            .customIconError: "चयनित चित्र लोड नहीं हो सका।",
            .pageIndicatorOffsetLabel: "पेज संकेतक अंतर",
            .pageIndicatorTopPaddingLabel: "पेज संकेतक का ऊपरी अंतर",
            .appTitle: "LaunchNext",
            .modifiedFrom: "LaunchNow संस्करण 1.3.1 के आधार पर संशोधित",
            .backgroundHint: "पृष्ठभूमि में चलाने के लिए LaunchNext को Dock में रखें या शॉर्टकट से विंडो खोलें",
            .classicMode: "क्लासिक Launchpad (पूर्ण स्क्रीन)",
            .iconSize: "आइकन आकार",
            .iconsPerRow: "प्रति पंक्ति आइकन",
            .rowsPerPage: "प्रति पृष्ठ पंक्तियाँ",
            .iconHorizontalSpacing: "क्षैतिज दूरी",
            .iconVerticalSpacing: "ऊर्ध्वाधर दूरी",
            .labelFontSize: "लेबल फ़ॉन्ट आकार",
            .iconLabelFontWeight: "आइकन लेबल मोटाई",
            .folderDropZoneSize: "फ़ोल्डर क्षेत्र का आकार",
            .folderDropZoneSizeHint: "मान को कम करने से विंडो मोड में आइकन खींचते समय गलती से फ़ोल्डर बनाने की संभावना घटती है।",
            .folderDropZoneSizeWithDefault: "फ़ोल्डर क्षेत्र का आकार (डिफ़ॉल्ट: %.1fx)",
            .smaller: "छोटा",
            .larger: "बड़ा",
            .predictDrop: "ड्रॉप स्थान का अनुमान",
            .showLabels: "आइकन के नीचे नाम दिखाएँ",
            .useLocalizedThirdPartyTitles: "लोकलाइज़्ड ऐप नाम उपयोग करें",
            .enableAnimations: "स्लाइड एनीमेशन सक्षम करें",
            .hideDockOption: "डॉक छुपाएँ",
            .hoverMagnification: "हॉवर बढ़ोतरी",
            .hoverMagnificationScale: "हॉवर स्केल",
            .activePressEffect: "दबाने पर प्रभाव",
            .activePressScale: "दबाव स्केल",
            .animationDurationLabel: "स्लाइड एनीमेशन अवधि",
            .gridSizeChangeWarning: "ग्रिड आकार बदलने पर कुछ आइकन स्थान बदल सकते हैं।",
            .pageIndicatorHint: "यदि बदलाव कम लगे तो पेज संकेतक का अंतर समायोजित करें।",
            .rememberPageTitle: "अंतिम खुला पृष्ठ याद रखें",
            .globalShortcutTitle: "वैश्विक शॉर्टकट",
            .shortcutSetButton: "शॉर्टकट सेट करें",
            .shortcutSaveButton: "सहेजें",
            .shortcutClearButton: "साफ़ करें",
            .shortcutNotSet: "सेट नहीं",
            .shortcutListening: "कुंजी प्रतीक्षा…",
            .shortcutCapturePrompt: "वांछित संयोजन दबाएँ। Esc से रद्द करें।",
            .shortcutNoModifierWarning: "बिना मॉडिफ़ायर अन्य ऐप्स से टकराव हो सकता है।",
            .scrollSensitivity: "स्क्रॉल संवेदनशीलता",
            .low: "कम",
            .high: "उच्च",
            .importSystem: "सिस्टम Launchpad आयात करें",
            .importLegacy: "Legacy (.lmy) आयात करें",
            .importTip: "सुझाव: “सिस्टम Launchpad आयात करें” पर क्लिक कर वर्तमान लेआउट लाएँ।",
            .exportData: "डेटा निर्यात करें",
            .importData: "डेटा आयात करें",
            .refresh: "रिफ़्रेश",
            .showQuickRefreshButton: "क्विक रिफ़्रेश बटन दिखाएँ",
            .resetLayout: "लेआउट रीसेट करें",
            .resetAlertTitle: "क्या लेआउट रीसेट करें?",
            .resetAlertMessage: "यह सभी फ़ोल्डर हटाकर क्रम साफ़ करेगा और ऐप्स को पुनः स्कैन करेगा। सभी कस्टम बदलाव हटेंगे।",
            .resetConfirm: "रीसेट",
            .cancel: "रद्द करें",
            .quit: "बंद करें",
            .appearanceModeTitle: "रूप मोड",
            .appearanceModeFollowSystem: "सिस्टम के अनुसार",
            .appearanceModeLight: "हल्का",
            .appearanceModeDark: "गहरा",
            .folderWindowWidth: "फ़ोल्डर विंडो चौड़ाई",
            .folderWindowHeight: "फ़ोल्डर विंडो ऊँचाई",
            .folderWindowSizeHint: "केवल विंडो मोड में प्रभावी; क्लासिक फुलस्क्रीन में आकार तय रहता है।",
            .versionPrefix: "v",
            .folderNamePlaceholder: "फ़ोल्डर का नाम",
            .viewOnGitHub: "प्रोजेक्ट लिंक खोलें",
            .chooseButton: "चुनें",
            .exportPanelMessage: "LaunchNext डेटा निर्यात करने के लिए फ़ोल्डर चुनें",
            .importPrompt: "आयात करें",
            .importPanelMessage: "वह फ़ोल्डर चुनें जिसे LaunchNext से निर्यात किया गया था",
            .legacyArchivePanelMessage: "Legacy Launchpad आर्काइव (.lmy/.zip) या db फ़ाइल चुनें",
            .importSuccessfulTitle: "आयात सफल",
            .importFailedTitle: "आयात विफल",
            .okButton: "ठीक",
            .checkForUpdates: "अपडेट जाँचें",
            .checkForUpdatesButton: "अपडेट जाँचें",
            .checkingForUpdates: "अपडेट की जाँच हो रही है…",
            .upToDate: "आप नवीनतम संस्करण पर हैं",
            .updateAvailable: "नया अपडेट उपलब्ध",
            .newVersion: "नया संस्करण:",
            .downloadUpdate: "अपडेट डाउनलोड करें",
            .updateCheckFailed: "अपडेट जाँच विफल",
            .tryAgain: "पुनः प्रयास",
            .autoCheckForUpdates: "स्वचालित रूप से अपडेट जाँचें",
            .versionParseError: "संस्करण पार्स त्रुटि",
            .updatesRefreshButton: "फिर से जाँचें",
            .openUpdaterConfig: "अपडेट कॉन्फ़िग फ़ाइल खोलें",
            .settingsSectionGeneral: "सामान्य",
            .settingsSectionAppSources: "स्कैन पथ",
            .settingsSectionAppearance: "रूप व व्यवहार",
            .settingsSectionHiddenApps: "छिपे हुए ऐप्स",
            .settingsSectionSound: "ध्वनि",
            .settingsSectionTitles: "ऐप नाम",
            .settingsSectionPerformance: "प्रदर्शन",
            .settingsSectionDevelopment: "विकास",
            .settingsSectionAI: "AI",
            .settingsSectionUpdates: "अपडेट्स",
            .settingsSectionAbout: "परिचय",
            .developmentPlaceholderTitle: "डेवलपर प्लेग्राउंड",
            .developmentPlaceholderSubtitle: "आने वाले टूल और प्रयोगात्मक सुविधाओं के लिए आरक्षित।",
            .aiSectionComingSoonTitle: "AI प्रयोगशाला (जल्द आ रही है)",
            .aiSectionComingSoonDescription: "AI आधारित लेआउट और वर्कफ़्लो प्रयोग यहीं इकट्ठा होंगे। अपनी राय भेजें ताकि हम रोडमैप तय कर सकें।",
            .backgroundStyleTitle: "पृष्ठभूमि शैली",
            .backgroundStyleOptionBlur: "धुंधला",
            .backgroundStyleOptionGlass: "लिक्विड ग्लास",
            .hiddenAppsAddButton: "ऐप छिपाएँ",
            .hiddenAppsEmptyTitle: "अभी कोई ऐप छिपा नहीं है",
            .hiddenAppsEmptySubtitle: "LaunchNext से हटाने के लिए किसी ऐप का चयन करें।",
            .hiddenAppsHint: "छिपाए गए ऐप्स ग्रिड से गायब हो जाते हैं। उन्हें वापस लाने के लिए यहाँ से हटाएँ।",
            .hiddenAppsRemoveButton: "वापस दिखाएँ",
            .hiddenAppsSearchPlaceholder: "छिपे हुए ऐप खोजें",
            .soundToggleTitle: "ध्वनि प्रभाव सक्षम करें",
            .soundToggleDescription: "LaunchNext कार्रवाइयों के लिए macOS सिस्टम ध्वनियाँ चलाएँ।",
            .soundEventLaunchpadOpen: "Launchpad खोलें",
            .soundEventLaunchpadClose: "Launchpad बंद करें",
            .soundEventNavigation: "फ़ोकस स्थानांतरण",
            .soundPreviewButton: "पूर्वावलोकन",
            .soundOptionNone: "कोई नहीं",
            .voiceToggleTitle: "Voice Over सक्षम करें",
            .voiceToggleDescription: "कीबोर्ड या कंट्रोलर से नेविगेट करते समय Voice Over वर्तमान ऐप का नाम सुनाता है।",
            .voiceNoteMutualExclusive: "Voice Over चालू होने पर नेविगेशन की ध्वनि की जगह आवाज़ सुनाई देगी।",
            .voiceAnnouncementAppFormat: "%@",
            .voiceAnnouncementFolderFormat: "फ़ोल्डर: %@",
            .performancePlaceholderTitle: "प्रदर्शन डैशबोर्ड",
            .performancePlaceholderSubtitle: "जल्द ही मेट्रिक्स यहाँ दिखेंगे।",
            .scanSourcesIntroTitle: "LaunchNext में ऐप खोजने के स्थान प्रबंधित करें",
            .scanSourcesIntroDescription: "यहाँ बाहरी ड्राइव या कस्टम फ़ोल्डर जोड़ें ताकि वहाँ की ऐप्स अपने आप LaunchNext में दिखें।",
            .scanSourcesPlaceholder: "जल्द ही: यहाँ कस्टम फ़ोल्डर जोड़ने या हटाने का विकल्प मिलेगा और LaunchNext उन्हें अद्यतन रखेगा।",
            .scanSourcesDefaultListTitle: "सिस्टम निर्देशिका",
            .scanSourcesCustomListTitle: "कस्टम निर्देशिका",
            .scanSourcesAddButton: "फ़ोल्डर जोड़ें…",
            .scanSourcesResetButton: "डिफ़ॉल्ट पुनर्स्थापित करें",
            .scanSourcesEmptyHint: "अभी कोई कस्टम निर्देशिका नहीं है। और ऐप सिंक करने के लिए एक जोड़ें।",
            .scanSourcesMissingBadge: "ऑफ़लाइन",
            .missingAppBadge: "ऑफ़लाइन"
        ]) { _, new in new }

        builder[.hindi] = hindiDictionary

        translations = builder
    }

    func localized(_ key: LocalizationKey, language: AppLanguage) -> String {
        let lang = language == .system ? AppLanguage.resolveSystemDefault() : language
        if let value = translations[lang]?[key] {
            return value
        }
        return translations[.english]?[key] ?? key.rawValue
    }

    func languageDisplayName(for language: AppLanguage, displayLanguage: AppLanguage) -> String {
        let resolvedDisplay = displayLanguage == .system ? AppLanguage.resolveSystemDefault() : displayLanguage
        switch language {
        case .system:
            return localized(.languageNameSystem, language: resolvedDisplay)
        case .english:
            return "English"
        case .simplifiedChinese:
            return "中文"
        case .japanese:
            return "日本語"
        case .korean:
            return "한국어"
        case .vietnamese:
            return "Tiếng Việt"
        case .french:
            return "Français"
        case .spanish:
            return "Español"
        case .italian:
            return "Italiano"
        case .czech:
            return "Čeština"
        case .german:
            return "Deutsch"
        case .russian:
            return "Русский"
        case .hindi:
            return "हिन्दी"
        case .portugueseBrazil:
            return "Português (Brasil)"
        }
    }
}
